我不是很有經驗的使用MVC。我正在處理這種情況。一切正常,直到調用其所有成員爲空的HttpPost方法。我不知道爲什麼不堅持所有的數據。如何在回發之間維護對象?
而且一切正常,因爲我可以看到我的Html頁面中的數據,只有當用戶提交信息時纔會發生這種情況。
[HttpGet]
public ActionResult DoTest()
{
Worksheet w = new Worksheet(..);
return View(w);
}
[HttpPost]
public ActionResult DoTest(Worksheet worksheet)
{
return PartialView("_Problems", worksheet);
}
這是一流的,我使用它。
public class Worksheet
{
public Worksheet() { }
public Worksheet(string title, List<Problem> problems)
{
this.Title = title;
this.Problems = problems;
}
public Worksheet(IEnumerable<Problem> problems, WorksheetMetadata metadata, ProblemRepositoryHistory history)
{
this.Metadata = metadata;
this.Problems = problems.ToList();
this.History = history;
}
public string Title { get; set; }
public List<Problem> Problems { get; set; } // Problem is an abstract class
public WorksheetMetadata Metadata { get; set; }
public ProblemRepositoryHistory History { get; set; }
}
而我的剃刀視圖....剃刀視圖顯示我的看法成功。我意識到一些非常罕見的事情,請注意我的第5行和第6行中有HiddenFor方法,如果我使用了這種方法,那麼當HTTPPOST調用持續存在數據時,我不知道爲什麼。
@model Contoso.ExercisesLibrary.Core.Worksheet
<div id="problemList">
<h2>@Html.DisplayFor(model => model.Metadata.ExerciseName)</h2>
@Html.HiddenFor(model => model.Metadata.ExerciseName)
@Html.HiddenFor(model => model.Metadata.ObjectiveFullName)
@for (int i = 0; i < Model.Problems.Count; i++)
{
<div>
@Html.Partial(Contoso.ExercisesLibrary.ExerciseMap.GetProblemView(Model.Problems[i]), Model.Problems[i])
</div>
}
</div>
UPDATE 我使用一個靜態類來獲取視圖名稱,但我測試我只是用這個局部視圖
@model Contoso.ExercisesLibrary.AbsoluteArithmetic.Problem1
<div>
<span style="padding:3px; font-size:18px;">@Model.Number1</span>
<span style="padding:5px; font-size:18px;">+</span>
<span style="padding:5px; font-size:18px;">@Model.Number2</span>
<span style="padding:5px; font-size:18px;">=</span>
<span style="font-size:18px">
@Html.EditorFor(model => model.Result, new { style = "width:60px; font-size:18px;" })
@Html.ValidationMessageFor(model => model.Result)
</span>
</div>
@section Scripts {
}
在這裏,用戶在做後期
@model Contoso.ExercisesLibrary.Core.Worksheet
<form method="post">
@Html.Partial("_Problems", Model)
<input type="submit" value="Continue" />
</form>
啊......我以爲ASP.NET MVC的一大優點是:*不再有回傳* ... –
你應該分享你的局部視圖 – rexcfnghk
我已經編輯過你的標題。請參見「[應的問題包括‘標籤’,在他們的頭銜?(http://meta.stackexchange.com/questions/19190/)」,這裏的共識是「不,他們不應該」。 –