2

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

    <% 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();
    }
4

3 回答 3

0

您需要发布实际的表单元素,让任何人都知道出了什么问题。

html 表单将绑定设置为 SearchDomain。你想让你的表单元素像这样命名:

<input name="searchData.SomeProperty">

让他们绑定到您的操作参数。

于 2009-11-11T21:21:53.147 回答
0

为了SearchDomain从控制器方法中将对象拉出视图,您的视图必须继承自System.Web.Mvc.ViewPage<Models.SearchDomain>,或包含对象的自定义 ViewModel 类。SearchDomain

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

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

        UpdateModel(domain , new[] { "Name", "Email", "Phone", ... });
        return View(domain); 
}
于 2009-11-11T21:22:46.310 回答
0

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

于 2009-11-12T01:53:08.383 回答