代码之家  ›  专栏  ›  技术社区  ›  Marko

部分视图(.ascx)中的Html.TextBox(“Title”)从父视图获取值“Title”

  •  0
  • Marko  · 技术社区  · 14 年前

    在我的论坛项目中,我有一个用于添加新论坛帖子的部分视图(.ascx)。论坛帖子位于主题(类别)内,这两个表都有一个名为 Title .

    现在的问题是,当我将部分视图放在主题页上时,它会自动从主题中获取标题值,从而用 Topic Title .

    里面的代码 CreatePost.ascx

    <label for="Title">Title</label>
    <%= Html.TextBox("Title") %>
    

    我试着把它改成 <%= Html.TextBox("Post.Title") %> 但是文本框的值不会被发布。

    这是正常的行为吗?有没有一种方法可以在不使用Javascript清除它的情况下消除它?

    我甚至试过用第二个重载设置一个值 Html.TextBox("Title", "some value")

    请帮忙!

    3 回复  |  直到 14 年前
        1
  •  2
  •   Darin Dimitrov    14 年前

    如果使用的是ASP.NET MVC 2,则应始终使用能够正确处理绑定的强类型帮助程序:

    <%= Html.TextBoxFor(x => x.Category.Title) %>
    
        2
  •  0
  •   john    14 年前

    请尝试以下操作:

       <label for="Title">Title</label>
       <%= Html.TextBox("Title") %>
    

    你的控制器.cs

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult CreatePost(string Title) {
        // do something with Title
        return View();
    }
    

    <% using (Html.BeginForm()) { %>....
      ..
      <% Html.RenderPartial("CreatePost.ascx");
      ..
      ..
    <% } >
    

    在你看来。

    希望这有帮助。。。

        3
  •  0
  •   Andy Butland    14 年前

    RenderPartial 允许您传入一个新模型。

    类似于:

    <% Html.RenderPartial("CreatePost.ascx", new Post());%>