繁体   English   中英

ASP.NET MVC 2:如何将Html.EditorFor用于自定义模型?

[英]ASP.NET MVC 2: How do you use Html.EditorFor for custom models?

我想知道这在MVC 2中如何工作。

假设我要呈现一个包含问题列表的视图(Popup.ascx),我创建了这些ViewModel

  public class VMPopup
  {
    public List<VMQuestion> Questions;
  }
  public class VMQuestion
  {
    public int Id
    public string Question;
    public string Answer;
    public bool Mandatory;
  }

我在控制器中会有这样的方法

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Popup(int elementId)
{
  List<VMQuestion> questions = new List<VMQuestion>();

  // Code to generate the questions
  // .....

  VMPopup vm = new VMPopup{Questions = questions};
  return View(vm);
}

1-我将在Popup.ascx视图中放什么? 我需要一个BeginForm吗?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<EnterpriseConnectMVC.Controllers.VMPopup>" %>

    <table border="1">
      <% foreach(var q in Model.Questions) { %>
        <%= Html.EditorFor(q); // I know this is wrong, how should I do it? %> 
      <% } %>
    </table>

    <input type="submit" value="OK" />

这是我对VMQuestion的看法

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<EnterpriseConnectMVC.Controllers.VMQuestion>" %>

<tr>
  <td><%= Model.Question %></td>
  <td>
    <%= Html.TextBoxFor(m=>m.Answer) %>
    <%= Html.ValidationMessageFor(m=>m.Answer) %>
  </td>
</tr>

2-然后,当用户单击“提交”按钮时,如何取回值?

提前致谢。

我将在POST操作上接受IEnumerable<VMQuestion>的参数。

您将需要为每个VMQuestion的属性添加一个索引,以使用默认模型绑定器来绑定集合。 看到这篇文章: http : //haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM