我是 web 开发的 mvc 方式的新手,我有一个带有两个动作索引和保存的主控制器和一个名为 MyModel 的模型和一个静态类 SomeData,它将 MyModel 作为属性 - SomeData 是一个具有静态属性 MyModel 的静态类(即我拥有的模型类的类型)和一个静态方法 getdata(),它返回对 ModelClass 的引用
public static MyModel MyModels;
static SomeData()
{
MyModels = new MyModel { SomeValue = 100 , SomeString="ComingFromSomeData"};
}
public static MyModel getdata()
{
return MyModels;
}
下面是两个动作方法,现在发生的是在启动动作索引调用getdata方法并绑定模型,我可以看到数据但是当我更改值并单击保存时,它又回到动作“保存”并修改传递的属性(添加 100 并添加“bro”)并尝试再次将模型绑定到“保存”视图(保存视图类似于 Index 视图,除了它还有一个 ActionLink ,它再次导航到 Index 视图) ,问题是在“保存”视图中,我看不到更改值,但是如果我单击操作链接并再次转到索引视图,我可以看到更改的值(已存储在静态类中)
public ActionResult Index()
{
MyModel M = SomeData.getdata();
return View(M);
}
[HttpPost]
public ActionResult Save(ValidationPractice.Models.MyModel M)
{
if (ModelState.IsValid)
{
SomeData.MyModels.SomeValue = M.SomeValue + 100;
SomeData.MyModels.SomeString = M.SomeString+" bro";
}
MyModel whosemodel = SomeData.getdata();
//return View("Index", whosemodel)
return View(whosemodel);
}
和模型如下
public class MyModel
{
private int _somevalue;
[Required]
public int SomeValue
{
get { return _somevalue; }
set { _somevalue = value; }
}
[Required]
public string SomeString
{
get;
set;
}
}
和索引视图如下
@model ValidationPractice.Models.MyModel
<form action="Home\Save" method="post">
<label>SomeLabel</label>  
@Html.EditorFor(model => model.SomeValue)
@Html.EditorFor(model=>model.SomeString)
<input type="submit" />
</form>
和保存视图如下 -
@model ValidationPractice.Models.MyModel
<form action="Home\Save">
<label>SomeLabel</label>  
@Html.EditorFor(@model => model.SomeValue)
@Html.EditorFor(@model=>model.SomeString) <br />
@Model.SomeString
@Model.SomeValue<br />
<input type="submit" />
@Html.ActionLink("Clicktoreturn", "Index");
需要注意的一点是 @Model.SomeString ,@Model.SomeValue 返回更新的值,即 200 和 ComingFromSomeDataBro 但绑定的模型 lambda 表达式 @model=> model.SomeString 不...为什么会发生?