我有這樣的模型:ASP.NET MVC 4形成交變量是空在接收控制器
public class WorkflowImport {
public bool IsLive { get; set; }
public string DateTimeCreated { get; set; }
public string CreatedByUser { get; set; }
public string VersionComments { get; set; }
public string VersionNumber { get; set; }
public string FilePath { get; set; }
public List<WorkflowProcess> WorkflowProcesses { get; set; }
}
局部視圖:
@model <FullyQualifiedPathTo...>.ViewModels.WorkflowImport
<div class="subSectionHeader">Upload New Workflow Profile</div>
<div class="AccountDetailLine">
@using (Html.BeginForm("UploadNewMatrix", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) {
<table>
<tr>
<td>Select Local File:</td>
<td>
<div class="upload-wrapper">
<input type="file" name="file" id="xlsfile" />
</div>
</td>
</tr>
<tr>
<td>Version Comments:</td>
<td>
@Html.TextBox("comments", Model.VersionComments, new Dictionary<string, object> { { "class", "textboxUploadField" } })
</td>
</tr>
<tr>
<td>Version Number:</td>
<td>
@Html.TextBox("version", Model.VersionNumber, new Dictionary<string, object> { { "class", "textboxUploadField" } })
</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
<tr>
<td>Select whether this file upload will update<br />
the live workflow matrix or just the "What If" test matrix</td>
<td>LIVE @Html.RadioButtonFor(model => model.IsLive, "True")
"What If" @Html.RadioButtonFor(model => model.IsLive, "False")
</td>
</tr>
</table>
<div class="submit-wrapper">
<input type="submit" value="Import Now" id="form_submit" class="ovobutton" />
</div>
}
</div>
和接收控制器/方法:
public class HomeController: Controller {
// POST /Home/UploadNewMatrix
[HttpPost]
public ActionResult UploadNewMatrix(WorkflowImport workflowImport) {
return View(workflowImport);
}
}
但是,當我輸入一些值到兩個文本框,然後點擊提交按鈕,我在上綁定的對象得到空值控制器,當在調試器中檢查。
我不知道爲什麼發生這種情況,因爲我用幾乎相同的模式(包括「多/表單數據」文件上傳)在以前的項目,並能夠成功獲取值。
有沒有什麼明顯的我在這裏沒有看到?這個新應用程序和以前的區別在於,它是jQuery中的一個局部視圖,但我不明白這會如何改變。另外,我需要使用傳統的文件上傳,因爲目標瀏覽器是IE8,不支持HTML5。
這工作,但如果你通過重命名它重構'VersionComments',你也不得不更新字符串「VersionComments」。 '{Input} For'方法更易於維護。 – Jacob