0

所有,我可以再次使用你的帮助。我目前正在尝试使用 HTML 助手创建一个,它将我的模型传递给Operations控制器​​的方法,TaskEdit如下所示:

[HttpPost]
public ActionResult TaskEdit(TaskViewModel viewModel, bool? embedded)
{
    // code
}

在视图中,我正在使用以下 Razor 代码来尝试生成表单:

@using (Html.BeginForm("TaskEdit", "Operations", new { embedded = true, viewModel = Model }, FormMethod.Post, new { @class = "form-horizontal"  }))
{
    // form code
}

这实际上并没有给我我的模型实例——它只是把类传回去,就好像它是一个静态类一样。所以我尝试了以下方法:

@using (Html.BeginForm("TaskEdit", "Operations", new { embedded = true, id = Model.TaskId }, FormMethod.Post, new { @class = "form-horizontal"  }))
{
    // form code
}

并产生了以下表格(这让我感到困惑):

<form action="/<sitename>/Operations/TaskEdit/0?embedded=True" class="form-horizontal" method="post"> <!-- Form code --> </form>

我不仅假设表单操作会更"/<sitename>/Operations/TaskEdit?id=0&embedded=True"符合 帮助?

4

1 回答 1

1

评论的转录:

URL 产生的原因/TaskEdit/0是您的路由设置方式。您会注意到该路由还定义了一个id导致它的格式与预期不同的格式。

这里最好的解决方案是使用强类型视图:

1) 将模型放在视图顶部 ( @model TaskViewModel)

2)从表单中删除模型参数

3) 使用内置扩展来创建表单字段 ( Html.EditorFor(x => x.SomeField)) 或使用字段名称(如果您手动执行此操作):<input type="text" name="SomeField />

4) 控制器 actionresult 中的模型参数现在将包含表单数据

于 2013-07-02T14:27:04.203 回答