我在mvc3中遇到了问题。我不确定这是特别是mvc3但是,我目前正在使用剃须刀引擎。无论如何,我面临的问题是,我有一个表单,我使用TextBoxFor,CheckBoxFor等来呈现它。渲染工作完美无缺,除了当我尝试发布数据时,我基本上发布了一个空值的空值。
这是我的模特:
public class SendReplyPmForm : PM
{
public new string Text { get; set; }
public bool IsOriginalDelete { get; set; }
public int ReplyNr { get; set; }
public string ReceiverName { get; set; }
}
我在视图和模型之间有一个额外的viewmodel图层,它包含一个关于此模型的额外参数
public class IndexViewModel
{
public SendReplyPmForm SendReplyPmForm { get; set; }
...
这是我的观点
@using (Html.BeginForm("SendReply", "Pm", FormMethod.Post, new { id = "formSendMsg" }))
{
@Html.TextBoxFor(model => model.SendReplyPmForm.ReceiverName, new { id = "ReceiverName" })
<span id="spanChkText">Delete Original Message: @Html.CheckBoxFor(model => model.SendReplyPmForm.IsOriginalDelete, new { id = "chkIsOriginalDelete", value = 1 })</span>
@{Html.RenderPartial("~/Areas/Forums/Views/Shared/Toolbar.cshtml");}
<span class="spanLabel">Message</span>
@Html.TextAreaFor(model => model.SendReplyPmForm.Text, new { id = "Text", rows = "10", cols = "65" })
@{Html.RenderPartial("temp.cshtml");}
@Html.HiddenFor(model => model.SendReplyPmForm.ReplyNr, new { id = "inputReplyNr", value = 0 })
<input type="submit" value="Send" />
}
这里我有控制器
[HttpPost]
public ActionResult SendReply(SendReplyPmForm SendReplyForm) {
var ViewModel = new IndexViewModel();
.
.
.
return View("Index", ViewModel);
}
奇怪的是,如果我使用纯HTML而不是Html助手,那么帖子就会顺利进行而没有任何问题。
我在发布此文章之前阅读了这篇文章(ASP.NET MVC’s Html Helpers Render the Wrong Value!),但我不太确定,我有同样的问题。 (f.e。:我在我的控制器中没有动作,它有相同的名称),但事实上也是使用纯Html让我思考。
你们有什么想法,我如何将这个表格与Html助手一起使用?
答案 0 :(得分:3)
我认为您的问题与here相同,因此您需要添加前缀:
[HttpPost]
public ActionResult SendReply([Bind(Prefix="SendReplyPmForm")]SendReplyPmForm SendReplyForm)
{
...
}