如何将自定义模型绑定到TextBoxFor

时间:2014-02-07 10:32:57

标签: c# asp.net-mvc razor html-helper

我是初学者,我认为我的问题非常明显,但我陷入其中!

在MVC中尝试将不是我视图的主模型的自定义模型(类)传递给我的控制器。 我的剃刀代码如下:

@helper  CreatForm()
    {
        MyViewModel myModel = new MyViewModel();
        using (Html.BeginUmbracoForm("Post", "ShowPost", FormMethod.Post, new { @class = "formCM" }))
    {
        myModel.PostNode = Node.GetCurrent();
        <div class="row">
            @Html.TextBoxFor(x =>  myModel.Name, new Dictionary<string, object> { { "placeholder", "Name" } })
        </div>
        <div class="row">
            @Html.TextBoxFor(x => myModel.Email, new Dictionary<string, object> { { "placeholder", "Email Address" } })
        </div>
        <div class="row">
            @Html.TextBoxFor(x => myModel.Website, new Dictionary<string, object> { { "placeholder", "Website" } })
        </div>
        <div class="row tall">
            @Html.TextAreaFor(x => myModel.Comment, new Dictionary<string, object> { { "placeholder", "Comment" } })
        </div>
        <div class="row">
            <input type="submit" id="Submit"  name="Submit" value="Submit" />
        </div>
    }
}

点击“提交”按钮将我带到控制器,但模型始终为空。

我的控制器如下:

[HttpPost]
public ActionResult Post(MyViewModel model)
{
    return this.View();
}

有什么建议吗?我是否必须将此MyModel属性添加到当前页面的ViewData?

1 个答案:

答案 0 :(得分:2)

创建一个采用MyViewModel的部分视图 - 使Html.TextBoxFor()以您希望的方式工作所需的部分视图。然后从主视图中调用该部分视图。假设您将视图命名为“myForm”,并将其放在共享文件夹中。然后在主视图中:

@Html.Partial("myForm", myModel)