在我的论坛项目中,我有一个部分视图(.ascx),用于添加新的论坛帖子。论坛帖子位于“主题(类别)”内,这两个表都有一个名为Title
的列。
现在的问题是,当我将局部视图放在Topic页面上时,它会自动从Topic中抓取Title值,从而用Topic Title
填充我的Title Textbox。 不理想!
CreatePost.ascx
内的代码只是
<label for="Title">Title</label>
<%= Html.TextBox("Title") %>
我已尝试将其更改为<%= Html.TextBox("Post.Title") %>
,但文本框值未发布。
这是正常的行为吗?有没有一种方法可以摆脱它而不用Javascript清除它?
我甚至尝试使用第二次重载Html.TextBox("Title", "some value")
来设置一个值,但这只是被覆盖了。
请帮忙!
答案 0 :(得分:2)
如果您使用的是ASP.NET MVC 2,则应始终使用强类型帮助程序来正确处理绑定:
<%= Html.TextBoxFor(x => x.Category.Title) %>
答案 1 :(得分:0)
尝试以下方法:
CreatePost.ascx
<label for="Title">Title</label>
<%= Html.TextBox("Title") %>
YourController.cs
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreatePost(string Title) {
// do something with Title
return View();
}
需要确保在
之间呈现CreatePost.ascx<% using (Html.BeginForm()) { %>....
..
<% Html.RenderPartial("CreatePost.ascx");
..
..
<% } >
在您的视图中。
希望这会有所帮助......
答案 2 :(得分:0)
听起来问题在于您用于渲染局部视图的代码。 RenderPartial将默认从父视图传递模型,因此您在部分中显示主题标题时看到的行为。您可以覆盖它 - RenderPartial的一个参数允许您传入新模型。
类似的东西:
<% Html.RenderPartial("CreatePost.ascx", new Post());%>
将新模型传递给局部视图(在本例中为空帖子)。