使用html助手时没有帖子值

时间:2011-02-01 09:59:22

标签: c# forms post asp.net-mvc-3 html-helper

我在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助手一起使用?

1 个答案:

答案 0 :(得分:3)

我认为您的问题与here相同,因此您需要添加前缀:

[HttpPost]
public ActionResult SendReply([Bind(Prefix="SendReplyPmForm")]SendReplyPmForm SendReplyForm)
{
  ...
}