两种形式和一种视图模型

时间:2013-03-05 01:07:32

标签: c# asp.net-mvc model viewmodel

我在一个页面中有两个表单。两者都有自己的属性并且有自己的提交操作,但在两种形式中都有一些共同的属性。

有没有办法使用一个视图模型构建一个包含两个表单的视图,这个视图模型在视图中共享两个表单的属性?

实际上我有重复的字段,我必须使用jquery复制两个字段中值的更改。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用HtmlPrefix来实现此目的。

  1. 我创建了一个模型

    public class TestModel
    {
      [Required]
      public int Id { get; set; }
      [Required]
      public string Name { get; set; }
    }
    
  2. 在Controller中,我们需要为每个表单设置一个GetMethod但两个post方法,但使用不同的 BindPrefix

    public ActionResult TestLoad()
    {
        TestModel model = new TestModel();
        return View(model);
    }
    
    public ActionResult TestA([Bind(Prefix = "A")]TestModel model)
    {
        return View("TestLoad",model);
    }
    public ActionResult TestB([Bind(Prefix="B")]TestModel model)
    {
        return View("TestLoad",model);
    }
    
    1. 在视图中。这里还我们需要指定绑定前缀
    2. <table>
       <tr>
        <td>
          @{Html.ViewData.TemplateInfo.HtmlFieldPrefix="A";}
          @{Html.RenderPartial("PartialA");}
        </td>
        <td>
          @{Html.ViewData.TemplateInfo.HtmlFieldPrefix="B";}
          @{Html.RenderPartial("PartialB");}
        </td>
      </tr>
      </table>
      
           
          
      1. 两个局部视图完全相同,只是它们将数据发布到不同的操作(在控制器中定义)

      2.   
      3. 现在,如果你运行项目,你应该得到适当的输出。

      4.   

      enter image description here

      enter image description here