在MVC PartialView中获取发布的值

时间:2009-11-11 21:19:13

标签: asp.net-mvc forms post asp.net-mvc-partialview

我创建了一个PartialView,我用Html.RenderPartial渲染,传递视图名称和强类型数据项绑定到(下面):

    <% Html.RenderPartial("SearchViewUserControl", ViewData["SearchData"]); %>

部分视图的表单包含提交按钮:

<% using (Html.BeginForm("Search", "Home"))
   { %>
             ...
    <div>
        <input type="submit" value="Search" />
    </div>
<% } %>

我在控制器的操作方法中设置了一个断点(如下所示),但在searchData中没有设置任何内容。我做错了什么?

   public ActionResult Search(SearchDomain searchData)
    {
        if (ModelState.IsValid)
        {
        }

        return View();
    }

3 个答案:

答案 0 :(得分:0)

你需要发布实际的表单元素,以便任何人知道什么是错的。

表单html是将绑定设置为SearchDomain的原因。您希望将表单元素命名为:

<input name="searchData.SomeProperty">

让他们绑定到你的动作参数。

答案 1 :(得分:0)

要从控制器方法中将SearchDomain对象从视图中拉出,您的视图必须继承自System.Web.Mvc.ViewPage<Models.SearchDomain>,或包含SearchDomain的{​​{3}}对象

另一种方法是让您的视图继承自System.Web.Mvc.ViewPage,并使用UpdateModel将视图数据强制转换为SearchDomain对象。像这样:

public ActionResult Save()
{
        SearchDomain domain = new SearchDomain ();

        UpdateModel(domain , new[] { "Name", "Email", "Phone", ... });
        return View(domain); 
}

答案 2 :(得分:0)

说实话,我认为RenderAction更容易使用。