在ASP.NET MVC中显示数据并将其接收回来的推荐方法是什么?

时间:2015-10-29 17:36:54

标签: c# asp.net asp.net-mvc asp.net-mvc-4

给出这个简单的模型:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name, int age)
    {
        this.Name = name;
        this.Age = age;
    }

    public Person()
    { }

    internal void Save()
    {
    }
}

使用此cshtml

    <fieldset>
        <legend>Person</legend>

        Age of @Html.DisplayFor(m=> m.Name) :   
                @Html.TextBoxFor(m=> m.Age)
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

Controller显示并保存:

public class HomeController : Controller
{
    public ActionResult Edit()
    {
        return View(new Person(name: "Test", age: 1));
    }

    [HttpPost]
    public ActionResult Edit(Person p)
    {
        p.Save();
        ViewBag.Message = "Did it";

        return View(p);
    }
}

通过这个例子,用户会看到用户的名字和年龄的输入,非常像这样:

Age of Test: 1

在这种情况下,因为我使用DisplayFor<T>来显示其Name属性不会回发到Edit类中的Person

我可以通过Name Controller绕过这个问题,但看起来这不是正确的方法(因为你在源代码中有两次信息)。

那么,显示属性并将其发回{{1}}的正确/推荐/常识方式是什么?

1 个答案:

答案 0 :(得分:0)

使用HiddenFor没有任何问题 - 事实上,这可能是你应该做的。如果您还使用EditorFor或类似的东西会很奇怪,但由于这是您指示您希望将数据发布到该操作的唯一地方,因此您完全清楚这样做。