模型未从视图更新到控制器

时间:2012-07-23 08:29:29

标签: asp.net-mvc-3 razor

我正在尝试这样做:

  1. 创建模型,将其添加到会话中并将其发送到视图。
  2. 在我的视图中更改模型字段
  3. 从我的控制器上更新会话模型
  4. 问题是当我在文本框中更改值时,我的模型永远不会更新,我确信我遗漏了一些剃刀, 视图:

    @model MvcTestApp.Models.Car
    
    <div class="b1">
    
        <div class="b2">@Html.EditorFor(e => e.KM)</div>                    
        <div class="b2">@Html.EditorFor(e => e.RegistrationNumber)</div>
    
    </div>
    
    @Html.ActionLink("Car", "sendCar")
    

    控制器: 在SendCar上,我想更新模型。

    namespace MvcTestApp.Controllers
    {
        public class CarController : Controller
        {
            public ActionResult Show()
            {
                var model = new MvcTestApp.Models.Car()
                {
                    RegistrationNumber ="12345",
                    KM = "12345"
                };
    
                Session["temp"] = model;
                return View("Show",Session["temp"]);
            }
    
    
            public ActionResult sendCar()
            {
               return View("Show", Session["temp"]);
            }       
    
        }
    }
    

    型号:

    namespace MvcTestApp.Models
    {
    
        public class Car
        {
    
            [DataType(DataType.Text)]
            public string KM { get; set;}
    
            [DataType(DataType.Text)]
            public string RegistrationNumber { get; set;}
    
        }  
    }
    

3 个答案:

答案 0 :(得分:0)

您需要让sendCar控制器更新模型。目前,您执行的所有更改只会在本地持续存在,直到您离开页面为止。您需要将更改的模型发布回服务器。

查看此示例的“处理编辑”部分,了解如何完成此操作:

Asp.net tutorials

答案 1 :(得分:0)

您应该阅读有关ASP.NET MVC的beginner tutorial,它将向您解释如何将数据从表单发送到控制器,因为您似乎完全不知道如何执行此操作。

你不会错过'某事',你遗漏了从表格到控制器的数据。

答案 2 :(得分:0)

执行此操作的方法是将模型详细信息包装在具有提交功能的表单中。然后在你的sendCar方法中接受一个Car对象,模型绑定将负责设置新对象的所有内容。

如果你想坚持这个(我认为这仅仅是出于测试目的?)那么也许让你的汽车在你的show方法中返回一个类变量。