MVC 4:使用JQUERY和PartialViewResult动态创建HTML文本框。如果代码是动态添加的,如何填充模型? - javascript

我正在使用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填充页面,然后在文本字段中输入数据,为什么模型为空?我还可以如何填充模型,以便我可以在DB中插入数据。

参考方案

为了使模型活页夹能够为您提供新的值,您需要设置控件的name属性。

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

因此,例如,如果您的集合是MyCollection以便在第一项上设置Name属性,则可以添加以下内容:

Name="MyCollection[0].Name"

第二等:

Name="MyCollection[1].Name"

The Features and Foibles of ASP.NET MVC Model Binding

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

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

JS从文本框中获取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null - javascript

JS从文本框中获取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null我有2个文本框,由用户选择时由2个日期选择器填充,但是当我使用下面的javascript将其传递给actionresult时,虽然信息可以正确地从文本框中获取。 actionresult的参数显示为空。我该如何解决?码:@Html.La…

从ASP.NET MVC中的AngularJS控制器加载数据而无需加载整个页面 - javascript

这是我的动作: [HttpPost, ValidateAntiForgeryToken] public ActionResult GetData() { //get data from DB and populate model with data return View("Data", model); } 该视图是: @model UI…

我可以在ID为键而不是ASP.NET MVC(C#)中的数组的情况下输出JSON吗 - javascript

因此,在ASP.NET MVC中,我有一个Controller动作,如下所示:public JsonResult People() { var people = db.People.ToList(); return Json(people); } 并在退出时将返回如下内容:[ { "ID": 1, "Name": &#…

如何添加按钮并重定向到MVC4中的另一个视图? - javascript

我有一个疑问。我有一个称为CustomerMaster的视图。在CustomerMaster视图中,我有一个字段,例如'Area','City'等。如果城市已经在列表中,它将自动显示在Dropdown中。假设我需要的城市不在列表中,这意味着我必须添加该城市。因此,我决定在“城市”字段附近保留一个“添加”按钮。如果单击该按钮,则需要重定向到该视图。那么我该如何…

我可以使用C#将用户信息存储到本地存储中吗 - javascript

我正在一个网站上工作,目前每当用户登录时,我都在使用Cookie存储控制台使用的必要信息。当用户使用c#登录和注销时,我想将用户信息不仅从登录信息存储到cookie,而且还存储在本地存储密钥中。目前,我正在使用javascript将信息存储在本地存储中。但是使用c#可以实现相同的方法吗?请建议我一些方法。谢谢。 参考方案 C#在服务器上执行,而本地存储在客户…