无法将数据从视图发送到控制器操作 .NET MVC

纳扬乔杜里

只需从视图到控制器操作发送一个 int 数据。但是控制器操作没有接收到 int 数据/无法映射该 int 数据。

我的控制器 =>

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult ConfirmNewBatchRequest(int? id)
    {
        if ((id?? 0) == 0)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        Studentassignbatche ConfirmStudentassignbatche = db.Studentassignbatches.Find(id);
        Batche FindBatche = db.Batches.Find(ConfirmStudentassignbatche.batch_code);

        if (ConfirmStudentassignbatche == null)
        {
            return HttpNotFound();
        }

        ConfirmStudentassignbatche.StatusCode = 1;
        db.Financeofstudents.Add(new Financeofstudent()
        {
            UserId = ConfirmStudentassignbatche.UserId,
            batch_code = ConfirmStudentassignbatche.batch_code,
            debit = FindBatche.amount,
            credit = 0,
            balance = FindBatche.amount,
            lastTrunsaction = DateTime.Now,
            entry_date = DateTime.Now
        });
        TryUpdateModel(ConfirmStudentassignbatche, new string[] { "StatusCode" });
        db.SaveChanges();

        TempData["BatchConfirmSuccess"] = "Success";
        return RedirectToAction("Index");
    }

我的观点 =>

    @using Something
    @model IEnumerable<Studentassignbatche>

    @{
        ViewBag.Title = "Confirm New Batch Request From Student";
        IEnumerable<Course> CoursesTable = TempData["Courses"] as IEnumerable<Course>;
        IEnumerable<UserDetail> UserDetailTable = TempData["UserDetails"] as IEnumerable<UserDetail>;
    }

    @section PageDescription{
        <section class="content-header">
            <h1>
                @ViewBag.Title
                <small>Tsms-admin</small>
            </h1>
        </section>
    }

    &nbsp;

    <div class="table-responsive">
        <table class="table table-striped table-inverse table-bordered">
            <tr>
                <th>#</th>
                <th>
                    @Html.DisplayNameFor(model => model.UserId)
                </th>
                <th>
                    @Html.Label("Student Name")
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.batch_code)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.name)
                </th>
                <th>
                    @Html.Label("Vendor Name")
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.adding_date)
                </th>
                <th></th>
            </tr>
            @{
                int counter = 1;
            }
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @counter
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.UserId)
                    </td>
                    <td>
                        @{
                            var UserDetailsId = UserDetailTable.Where(x => x.UserId == item.UserId).Select(x => x.id).FirstOrDefault();
                            var name = UserDetailTable.Where(x => x.UserId == item.UserId).Select(x => x.fullname).FirstOrDefault();
                        }
                        @Html.ActionLink(name, "Details", "Students", new { id = UserDetailsId }, null)
                    </td>
                    <td>
                        @Html.ActionLink(item.batch_code, "Details", "Batche", new { id = item.batch_code }, null)
                    </td>
                    <td>
                        @Html.ActionLink(item.name, "Details", "Course", new { id = item.name }, null)
                    </td>
                    <td>
                        @{
                            var vendorname = CoursesTable.Where(x => x.name == item.name).Select(x => x.vendor_heading).FirstOrDefault();
                        }
                        <label style="font-weight:normal !important">@vendorname</label>
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.adding_date)
                    </td>
                    <td style="width:100px;">
                        @using (Html.BeginForm())
                        {
                            @Html.AntiForgeryToken()
                            @Html.HiddenFor(modelitem => item.id)

                            <div class="form-actions no-color">
                                <input type="submit" value="Confirm" class="btn btn-success" /> 
                            </div>
                        }
                    </td>
                </tr>
                counter++;
            }
        </table>
    </div>

循环内呈现的表单如下所示:

<form action="/Admin/ConfirmNewBatchRequest" method="post"> 
  <input name="__RequestVerificationToken" type="hidden" value="K4GmhPUCkcqqclPtxW7F1YpiT_6mQBBZu7Wi8JtfQDMWdmCPMQsbj‌​Bfmtr9t8pSBrOV6Yixhh‌​tz0B-OfMtxj4Y8dOwrdR‌​BXlz9v0sD7O8YE1" />
  <input data-val="true" data-val-number="The field id must be a number." data-val-required="The id field is required." id="item_id" name="item.id" type="hidden" value="3" /> 
  <div class="form-actions no-color"> 
    <input type="submit" value="Confirm" class="btn btn-success" /> 
  </div> 
</form>

这是我的模型如何与视图绑定 =>

public class Studentassignbatche
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int id { get; set; }
    /// <summary>
    /// ////////
    /// </summary>
    [Required(AllowEmptyStrings = false, ErrorMessage = "User Id Is Required!")]
    [MaxLength(12, ErrorMessage = "The Max length Of User ID is 12 Character!")]
    [RegularExpression("[1-3]{2}-[0-9]{5}-[123]{1}|[1-3]{2}-[0-9]{7}-[123]{1}", ErrorMessage = "Invalid Id,It should [xx]-[xxxxx]-[x] or [xx]-[xxxxxxx]-[x]!")]
    [Display(Name = "User ID")]
    public string UserId { get; set; }
    /// <summary>
    /// /////////
    /// </summary>
    [Required(AllowEmptyStrings = false, ErrorMessage = "Course Name Is Required!")]
    [MaxLength(700, ErrorMessage = "The Max Length For Course Name Is 700 Character!")]
    [Display(Name = "Course Name")]
    public string name { get; set; }
    /// <summary>
    /// /////////
    /// </summary>
    [Required(AllowEmptyStrings = false, ErrorMessage = "Batch Code Is Required!")]
    [MaxLength(700, ErrorMessage = "The Max Length For Batch Code Is 700 Character!")]
    [Display(Name = "Batch Code")]
    public string batch_code { get; set; }
    /// <summary>
    /// ///////
    /// </summary>
    [Required(AllowEmptyStrings = false, ErrorMessage = "Status Is Required!")]
    [RegularExpression("^(?:complete|Complete|in progress|In progress)$", ErrorMessage = "Invalid Status!")]
    [Display(Name = "Current Status")]
    public string status { get; set; }
    /// <summary>
    /// ////////
    /// </summary>
    [Display(Name = "Course Completion Date")]
    [DataType(DataType.DateTime,ErrorMessage="Invalid Date!")]
    public Nullable<DateTime> completion_date { get; set; }

    [Display(Name="Date Of Addition")]
    [DataType(DataType.DateTime,ErrorMessage="Invalid Date!")]
    public DateTime adding_date { get; set; }
    /// <summary>
    /// /////////
    /// </summary>
    [RegularExpression("^[01]{1}$", ErrorMessage = "Invalid Status Code!")]
    [Required(ErrorMessage="Status Code Is Required!")]
    public int StatusCode { get; set; }

    //relationship with anothere  table------

    [ForeignKey("UserId")]
    public User User { get; set; }
    /// <summary>
    /// //////
    /// </summary>
    [ForeignKey("name")]
    public Course Course { get; set; }
    /// <summary>
    /// ///////
    /// </summary>
    [ForeignKey("batch_code")]
    public Batche Batche { get; set; }
}

当我调试时,在控制器上我发现 =>在此处输入图片说明并且我尝试使用 =>

    public ActionResult ConfirmNewBatchRequest(Studentassignbatche Studentassignbatche)
    {
        if (Studentassignbatche == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
    }

但在首次亮相时,它仍然向我展示一个空对象。

为什么会发生这种情况,因为在视图方面它可以生成多个<form></form>但据我所知,如果视图生成不止一个,<form></form>每个表单都会得到一个隐藏的输入字段。当表单将提交时,它将与那个特定的隐藏字段相关联<form>或者我的 URL 看起来像 URLhttp://localhost:43847/Admin/ConfirmNewBatchRequest有问题吗?那么为什么会出现这个问题,以及如何摆脱这个问题。

阿戴森

问题是您的表单和回发方法不匹配。

在您的表单中,呈现的隐藏字段nameitem.id但是,您的操作方法只需要一个名为id. 表单将提交它,就好像它id是名为 的对象的一部分item

您用来呈现字段的 HTML 帮助程序是为您想回发整个模型而设计的,而不仅仅是一个字段 - 即在这种情况下,您的操作方法必须接受类型为 的对象Studentassignbatche

要解决此问题,您可以使用 HiddenField 助手的更简单版本:

@Html.Hidden("id", item.id)

这应该呈现如下:

<input name="id" type="hidden" value="3" />

这将意味着name匹配您的操作方法所期望的名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用URL将数据从javascript发送到ASP.NET MVC控制器

来自分类Dev

如何在asp.net mvc中将字符串列表从控制器发送到javascript(显示在视图中)

来自分类Dev

MVC4:将子部分视图值发送到控制器?

来自分类Dev

MVC将数据从视图发送到控制器

来自分类Dev

如何将AJAX数据从VIEW发送到控制器?(PHP(MVC)+ AJAX)

来自分类Dev

将控制器的多个模型发送到单个视图以获取不同形式的MVC

来自分类Dev

使用AngularJS将数据发送到ASP.NET MVC 5控制器的操作方法

来自分类Dev

如何使用Angular2将数据发送到ASP.NET控制器

来自分类Dev

MVC Ajax:如何将字符串从视图发送到控制器

来自分类Dev

Asp.Net MVC。可以将数据从视图传输到控制器而不会丢失数据

来自分类Dev

无法使用js将文件值发送到asp.net mvc中的控制器

来自分类Dev

Asp.net无法将值从选择发送到控制器中的http帖子

来自分类Dev

ASP.NET MVC:从视图导航时,如何将客户端浏览器上的DOM Body元素的ID发送到控制器

来自分类Dev

如何使用Ajax将复杂的数据类型发送到ASP.NET MVC中的控制器中的操作

来自分类Dev

ASP.NET Core MVC-从视图将模型数据传递回控制器

来自分类Dev

将数据从视图发布到ASP.Net MVC中的控制器

来自分类Dev

如何在asp.net mvc中将字符串列表从控制器发送到javascript(显示在视图中)

来自分类Dev

在asp.net mvc4中将图像文件发送到控制器操作方法

来自分类Dev

无法将JSON数据发送到MVC控制器

来自分类Dev

asp.net MVC将操作从继承的控制器重定向到通用基本控制器视图

来自分类Dev

发布MVC表单以调用需要视图模型的控制器操作视图。为什么未将ViewModel发送到视图?

来自分类Dev

将Javascript数组发送到控制器ASP.NET MVC

来自分类Dev

angularJs,Spring MVC:如何将数据发送到Spring控制器

来自分类Dev

将数据从 TableViewCell 发送到控制器 MVC 原则

来自分类Dev

ASP.NET MVC 将 List<Foo> 集合从我的视图发送到控制器

来自分类Dev

如何通过MVC C#中的控制器将模型数据发送到视图

来自分类Dev

我无法将数据从 AngularJS 发送到 Spring MVC 控制器

来自分类Dev

将 JSON 字符串发送到 ASP.NET Core MVC 控制器

来自分类Dev

使用 AJAX 将数据发送到 MVC 控制器

Related 相关文章

  1. 1

    如何使用URL将数据从javascript发送到ASP.NET MVC控制器

  2. 2

    如何在asp.net mvc中将字符串列表从控制器发送到javascript(显示在视图中)

  3. 3

    MVC4:将子部分视图值发送到控制器?

  4. 4

    MVC将数据从视图发送到控制器

  5. 5

    如何将AJAX数据从VIEW发送到控制器?(PHP(MVC)+ AJAX)

  6. 6

    将控制器的多个模型发送到单个视图以获取不同形式的MVC

  7. 7

    使用AngularJS将数据发送到ASP.NET MVC 5控制器的操作方法

  8. 8

    如何使用Angular2将数据发送到ASP.NET控制器

  9. 9

    MVC Ajax:如何将字符串从视图发送到控制器

  10. 10

    Asp.Net MVC。可以将数据从视图传输到控制器而不会丢失数据

  11. 11

    无法使用js将文件值发送到asp.net mvc中的控制器

  12. 12

    Asp.net无法将值从选择发送到控制器中的http帖子

  13. 13

    ASP.NET MVC:从视图导航时,如何将客户端浏览器上的DOM Body元素的ID发送到控制器

  14. 14

    如何使用Ajax将复杂的数据类型发送到ASP.NET MVC中的控制器中的操作

  15. 15

    ASP.NET Core MVC-从视图将模型数据传递回控制器

  16. 16

    将数据从视图发布到ASP.Net MVC中的控制器

  17. 17

    如何在asp.net mvc中将字符串列表从控制器发送到javascript(显示在视图中)

  18. 18

    在asp.net mvc4中将图像文件发送到控制器操作方法

  19. 19

    无法将JSON数据发送到MVC控制器

  20. 20

    asp.net MVC将操作从继承的控制器重定向到通用基本控制器视图

  21. 21

    发布MVC表单以调用需要视图模型的控制器操作视图。为什么未将ViewModel发送到视图?

  22. 22

    将Javascript数组发送到控制器ASP.NET MVC

  23. 23

    angularJs,Spring MVC:如何将数据发送到Spring控制器

  24. 24

    将数据从 TableViewCell 发送到控制器 MVC 原则

  25. 25

    ASP.NET MVC 将 List<Foo> 集合从我的视图发送到控制器

  26. 26

    如何通过MVC C#中的控制器将模型数据发送到视图

  27. 27

    我无法将数据从 AngularJS 发送到 Spring MVC 控制器

  28. 28

    将 JSON 字符串发送到 ASP.NET Core MVC 控制器

  29. 29

    使用 AJAX 将数据发送到 MVC 控制器

热门标签

归档