MVC 4:使用 JQUERY 和 PartViewResult 动态创建 HTML 文本框.如果代码是动态添加的,如何

MVC 4: Create HTML textboxes dynamically with JQUERY and PartialViewResult. How to fill the model if the code is added dynamically?

本文关键字:动态 代码 如果 添加 如何 文本 HTML 使用 JQUERY 创建 PartViewResult      更新时间:2023-09-26

>我正在使用JQUERY创建表单输入字段,例如

$('#students').live('change', function () {
  var value = $(this).val();
  if (value) {
    $.ajax({
      type: "GET",
      timeout: 10000,
       url: "@Url.Action(MVC.Company.ManageWorkReport.GetStudent())",
       data: { studentId: value },
       cache: false,
       success: function (data) {
         if (data) {
           $("#students tbody").html(data);                                
         }
       },
       error: function (xhr, status, error) {
         alert(xhr.responseText);
       }
     });
  }
  return false;
});

用于插入数据的 HTML 代码是

@using (Html.BeginDefaultForm(MVC.Company.ManageWorkReport.Create()))
{
  <table class="table table-striped table-bordered bootstrap-datatable datatable" id="students">
    <thead>
      <tr>
        <th>Ime in Priimek</th>
        <th>Vrsta</th>
        <th>Začetek dela</th>
        <th>Konec dela</th>
        <th>Enota</th>
        <th>Cena za enoto</th>
        <th>Količina</th>
        <th>Neto znesek</th>
        <th>Bruto znesek</th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td colspan="11">Podatek še ne obstaja</td>
      </tr>
    </tbody>
  </table>
  @Html.SimpleSubmitAndCancelButton(Translations.Global.SAVE, Translations.Global.CANCEL)
}

和 C#

[HttpGet]
public virtual PartialViewResult GetStudent(int studentId)
{
  StudentsWorksReportsFormModel studentsWorksReportsFormModel = new StudentsWorksReportsFormModel();
  .....
  var view = PartialView("StudentWorkReportResult", studentsWorksReportsFormModel);        
  return view;

}

问题是当我在表单中输入数据并单击"提交"按钮时,模型始终为空。如果我用 JQUERY 填充页面,然后在文本字段中输入数据,为什么模型为空?如何填充模型,我可以在数据库中插入数据。

为了使模型绑定程序选取新值,您需要设置控件的 name 属性。

每个项目都需要编制索引并使用属性名称进行设置。

因此,例如,如果MyCollection集合以在第一项上设置 Name 属性,则需要添加以下内容:

Name="MyCollection[0].Name"

第二个等:

Name="MyCollection[1].Name"

MVC模型绑定 ASP.NET 的特点和缺点

如果要返回部分视图,则需要遍历集合,如下所示:

@for(i = 0; i < Model.StudentWorkReportFormModel.Count; i++)
{
    @Html.TextBoxFor(modelItem => Model.StudentWorkReportFormModel[i].StartDate})
}