1
我有一個控制器設置爲1模型屬性,但在我看來,我認爲它是0和1這取決於我如何訪問它。MVC4查看模型int屬性是1但HTML呈現爲0?
查看片段(這些線是絕對連續的呢!)
@Html.DisplayFor(model => model.resumeStage)
@Html.HiddenFor(model => model.resumeStage)
@Html.EditorFor(model => model.resumeStage)
渲染HTML
1
<input value="0" data-val="true" data-val-number="The field resumeStage must be a number." data-val-required="The resumeStage field is required." id="resumeStage" name="resumeStage" type="hidden" />
<input value="0" class="text-box single-line" id="resumeStage" name="resumeStage" type="number" />
應該不是值(我在爲便於閱讀標籤的前面移動的value=
)總是1?當我將其呈現在文本框中時,我似乎失去了該屬性的狀態!視圖控制器通過被定義爲
public class CreateUserModel
{
[Required]
public int resumeStage { get; set; } // <== problem
public LocalProfile newLocalUser { get; set; }
public ExtProfile newExtUser { get; set; }
public CreateUserModel()
{
resumeStage = 0;
newLocalUser = new LocalProfile();
newExtUser = new ExtProfile();
preFillWithTestData();
}
private void preFillWithTestData()
{
// prefill the newLocalUser
// and newExtUser classes with dummy data
}
}
控制器方法接收表單POST(其中I 0 => 1翻轉INT)的模型類強結合是:
[HttpPost]
public ActionResult UserRegistration(CreateUserModel newUser)
{
try
{
//stage 0, setup local account
if (newUser.resumeStage <= 0)
{
// do stuff
newUser.resumeStage = 1;
}
// stage 1, setup external account
if (newUser.resumeStage <= 1)
{
// test an exception
Exception ex = new Exception("TEST: External service provider offline");
throw ex;
newUser.resumeStage = 2;
}
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View(newUser); // newUser.resumeStage is 1 here but
// view will disagree
}
}
控制器方法創建和呈現形式是:
public ActionResult UserRegistration()
{
// Constructor prefills with test data, nothing more to do
CreateUserModel newUser = new CreateUserModel();
return View(newUser);
}
問題:有誰知道爲什麼我似乎不能顯示爲resumeStage有1在HTML呈現的文本框內?
好奇。爲什麼需要?似乎是一個任意的解決方法...... – DeepSpace101
找到在http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear ...的原因,它是一個非常奇怪的MVC行爲! – DeepSpace101