Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC 3模型提交后视图未刷新_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 MVC 3模型提交后视图未刷新

Asp.net mvc 3 MVC 3模型提交后视图未刷新,asp.net-mvc-3,Asp.net Mvc 3,在MVC3项目中,我的观点有一个奇怪的问题。我有一个用于数据编辑的标准视图(使用模板创建)。提交表单时,我更改了Name属性,但从控制器返回浏览器后,我仍然看到lorem值。为什么? @using (Html.BeginForm()) { @Html.EditorFor(model => model.Name) <input type="submit" value="Save" /> } public Vi

在MVC3项目中,我的观点有一个奇怪的问题。我有一个用于数据编辑的标准视图(使用模板创建)。提交表单时,我更改了
Name
属性,但从控制器返回浏览器后,我仍然看到
lorem
值。为什么?

    @using (Html.BeginForm())
    { 
        @Html.EditorFor(model => model.Name)
        <input type="submit" value="Save"  />
    }


    public ViewResult EditUserData(int id)
    {
        [...]
        UserData model = new UserData();
        model.Name = "lorem";            

        return View("~/Views/UserDetails.cshtml", model);
    }

    [HttpPost]
    public ViewResult EditUserData(UserData model)
    {
        model.Name = "ipsum";
        return View("~/Views/UserDetails.cshtml", model);    
    }

public class ControlUserData
{
    [...]

    [Required]
    [Display(ResourceType = typeof(Resources), Name = "UserNameFirst")]
    public string Name { get; set; }
}
@使用(Html.BeginForm())
{ 
@EditorFor(model=>model.Name)
}
公共视图结果EditUserData(int id)
{
[...]
UserData模型=新的UserData();
model.Name=“lorem”;
返回视图(“~/Views/UserDetails.cshtml”,model);
}
[HttpPost]
公共视图结果EditUserData(UserData模型)
{
model.Name=“ipsum”;
返回视图(“~/Views/UserDetails.cshtml”,model);
}
公共类ControlUserData
{
[...]
[必需]
[显示(ResourceType=typeof(Resources),Name=“UserNameFirst”)]
公共字符串名称{get;set;}
}

如果要在post/get中修改该值,则需要从
ModelState
中删除该值:

[HttpPost]
public ViewResult EditUserData(UserData model)
{
    ModelState.Remove("Name");
    model.Name = "ipsum";
    return View("~/Views/UserDetails.cshtml", model);    
}
这是内置的MVC行为:所有的
Html.Helpers
首选
ModelState
集合中的值,而不是实际的模型值


这里有一篇关于这方面的好文章:。

这是精心设计的。MVC假设您希望在处理post操作时显示用户最初提交的内容。请参阅。

只是一个小编辑。。。用于刷新整个模型

[HttpPost]
public ViewResult EditUserData(UserData model)
{
   UserData newmodel = new UserData();
   ModelState.Clear();
   model = newmodel;
   return View("~/Views/UserDetails.cshtml", model);    
}
为单个字段更新ModelState(在回发时,视图使用此集合,而不是传递的模型)有一个更简单的解决方法。以下是我在返回到同一视图之前更新特定字段所做的操作:

var newVal = new ValueProviderResult("updated value", "updated value", CultureInfo.InvariantCulture);
ModelState.SetModelValue("MyFieldName", newVal);

根据您使用的.NET/MVC版本,有其他更简单的重载。

是否命中了post操作?visual studio断点???@Shyju是的,在我点击submit按钮后,调试器调用HttpPost的操作,而不是将其放在共享目录中并执行
查看(“UserDetails”,Model)
。@Tony:提供的代码是否与您拥有的代码相同(对于post操作方法) ? 你有ModelState.IsValid属性检查语句吗???@Erik Philips我的帖子中修改了视图的路径