HttpBeginForm 跟 AjaxBeginForm
在.Net MVC 裡面,我們常常會用Form 包住選項,然後在前端發出Post Request 的時候,進到Controller 裡面,透過Binding 得到傳來的Model 。
所以在前端接到 File,Post到後端的時候會用 HttpPostedFileBase 類別來接,當然也可以先定義好在Model內,然後Controller 接的時候一樣接起來。
但前陣子因為專案需使用KendoUI,所以在前端會用Ajax.beginForm
這時我一如往常的寫好整包的form然後把資料丟去Controller
這時監看式一看,HttpPostedFileBase 的資料居然是Null...
於是我Google了一下,發現到原因應該是因為Ajax不同步的方式所致
但也因為要有AjaxOptions Success 和 Fail 的操作
所以最後也只能,在ajaxSubmit的時候加入forceSync 的屬性
function Save() {
$('#frmCreate').ajaxSubmit({
url: "@Url.Action("Action", "Controller")",
forceSync: true,
type: 'post',
success: function (data) {
alertSuccess(data);
}
});
}