我想從我的表單提交ProductBrandViewModel類型的視圖模型我的控制器動作,但在視圖模型兩端的物業name
即使已從表單中傳入值,它仍爲null。上一個動作表單POST日常工作而不是其他時候正好相同方式實現
表
<div class="modal fade" id="modAddProductBrand" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Add Brand</h4>
</div>
<div class="modal-body">
@using (Html.BeginForm("Create", "ProductBrands", FormMethod.Post, new {id = "frmProductBrand"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false, "You have not entered a name for your brand", new {@class="alert alert-danger"})
<div class="form-group">
@Html.LabelFor(model => model.ProductBrand.Name)
@Html.TextBoxFor(model => model.ProductBrand.Name, null, new {id = "txtProductBrandName", @class = "form-control", placeholder = "Brand Name"})
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-success" id="btnCreateProductBrand"> Save Changes</button>
</div>
}
</div>
</div>
</div>
</div>
POST操作
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ProductBrandViewModel brand)
{
if (!ModelState.IsValid) return null;
try
{
var userSessionViewModel = GetUserSession();
var createdProductBrand = CreateProductBrand(userSessionViewModel.Business, brand);
return RedirectToAction("Index");
}
catch
{
return View("Index");
}
}
ProductBrandViewModel
public class ProductBrandViewModel
{
public Guid Id { get; set; }
[Required]
[Display(Name = "Brand Name")]
public string Name { get; set; }
public int ProductCount { get; set; }
}
嗨,謝謝你的迴應,但是如果你注意到了,我已經提到了改變這個論點,正如你所說的那樣。但是在我的問題中有一個部分叫做工作版本,我對類別的執行方式完全相同。控制器接受ProductCategoryViewModel而不是ProductCategoryPageViewModel,它工作正常。爲什麼當我嘗試爲品牌實現相同的事情時,它不起作用 –
對於工作版本,你是在做一個ajax發佈或一個正常形式的帖子,因爲它是?在兩個屏幕中檢查生成的輸入表單名稱。 – Shyju
它們都是正常的表單發佈,此時不使用AJAX。 –