在asp.net mvc中使用HTML帮助程序时,View不显示更新的值

时间:2009-11-24 07:55:43

标签: asp.net-mvc

我有这样的问题。我在控制器中更改了模型字段,但没有看到更改。

以下是代码部分:

这是观点 的Index.aspx

<%Html.BeginForm("Index", "First");%>
<p>        
    <%=Html.TextBox("Title") %>
</p>
<p>        
    <%=Html.TextBox("Price") %>
</p>
<input type="submit" value="Submit" />
<%Html.EndForm();%>

这是控制器:

FirstController.cs

public class FirstController : Controller
{

    [AcceptVerbs(HttpVerbs.Get)]
    public ViewResult Index()
    {
        return View(new MyModel());
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ViewResult Index(MyModel k)
    {
        k.Title = "Title";
        return View(k);
    }

这是模特:

MyModel.cs

公共类MyModel     {

    public String Title { get; set; }

    public Decimal Price { get; set; }

}

当我更改控制器中的“标题”文本框时,我看不到视图中的更改

public ViewResult Index(MyModel k)
    {

        k.Title = "Title";
        return View(k);

    }

文本框在提交前保留其值。 我的代码中是否有任何错误。

当我使用html标准输入标记而不是Html.TextBox时,不会出现此问题:

input type="text" id="Title" name="Title" value="<%=Model.Title %>

提前谢谢。

3 个答案:

答案 0 :(得分:1)

public ViewResult Index(MyModel k)
    {
        ModelState.Clear(); 
        k.Title = "Title";
        return View(k);
    }

您是否尝试过添加ModelState.Clear(),如上例所示? 希望这有帮助!

答案 1 :(得分:0)

我有这样的问题,但我认为我们都不了解MVC应用程序的生命周期。 让我们等一下其他答案

答案 2 :(得分:0)

你应该这样做:

<%Html.BeginForm("Index", "First");%>
<p>        
    <%=Html.TextBox("Title",Model.Title) %>
</p>
<p>        
    <%=Html.TextBox("Price",Model.Price) %>
</p>
<input type="submit" value="Submit" />
<%Html.EndForm();%>

Html.TextBox()有一个覆盖版本取对象值arg来填充文本值!