asp.net-mvc - 部分 View 提交返回 null

标签 asp.net-mvc partial-views razor-2

我正在尝试创建一个单一 View ,该 View 允许用户使用索引 View 模型查看当前列出的项目,然后还允许用户使用单独的创建 View 模型创建新项目

所以我有两个 viewModel -IndexFunkyThingsViewModel -CreateFunkyThingViewModel

本质上我有一个主要观点:

@model IndexFunkyThingsViewModel
@foreach (var item in Model.FunkyThings)
{
/*Indexy stuff*/    
}

/*If create item*/
@if (Model.CreateFunkyThing)
{
@Html.Partial("_CreateFunkyThingPartial", new CreateFunkyThingViewModel());
}

然后在我的部分 View 中我有

@model CreateFunkyThingViewModel
@using (Html.BeginForm(MVC.FunkyThings.CreateFunkyThing(Model)))
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Create FunkyThing</legend>
        @Html.EditorForModel();
        <p>
            <input type="submit" class="button green" value="CreateFunkyThing" />
        </p>
    </fieldset>
}

最后在 Controller 中我有:

[HttpPost]
public virtual ActionResult CreateFunkyThing(CreateFunkyThingViewModel createFunkyThingViewModel)
{
    ..
}

这一切似乎都编译得很愉快,当我进入 View 时,它可以显示创建字段等。然而,当我点击提交按钮时, Controller 没有收到任何数据。 ActionResult 被调用,但是在调试器中,当通过提交按钮调用时,createFunkyThingViewModel 参数为 null。

我做错了什么?

最佳答案

当发布到 Controller 时,您不会将模型发送给它。使用这个:

 @using (Html.BeginForm("CreateFunkyThing", "ControllerName", FormMethod.Post))

然后从按钮周围删除 p 标签,并且不要使用任何内容。

段落标签倾向于将按钮与表单分开分组,即使它们位于同一个外部容器中。

关于asp.net-mvc - 部分 View 提交返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341403/

相关文章:

javascript - 暂停动画 2 秒,然后在 jQuery 中自动恢复它(不是在鼠标悬停或鼠标移出时)?

c# - 将 MVC PartialView 渲染到 SignalR 响应中

asp.net - 当模型无效时,返回 View 内的部分 View ,并使用asp.net core 显示错误消息

c# - MVC 和 Entity Framework Html.DisplayNameFor 与复合 ViewModel

.net - 在 <link> 元素上使用 Razor 2 编写 RSS 失败

c# - 无法加载文件或程序集 'System.Web.Razor' 或其依赖项之一

asp.net - 防止XSS(跨站点脚本)

jquery - ASP.NET MVC - 从 IIS 接收 Json 响应时出现问题

javascript - 如何根据AngularJS局部 View 动态更改标题?

asp.net-mvc-4 - 使用 @Url.Content ("~"是否有好处)