Если вы заполняете ViewData["categoryList"]
, например:
ViewData["categoryList"] = categories.Select(
category => new SelectListItem {
Text = category.Title,
Value = category.Id.ToString()
}).ToList();
, затем в своем действии POST вы можете просто обновить свойство Product.Category:
int categoryId;
int.Parse(Request.Form["Category"], out categoryId);
product.Category = categories.First(x => x.Id == categoryId);
или создайте пользовательский ModelBinder для обновления с помощью UpdateModel ():
public class CustomModelBinder : DefaultModelBinder
{
protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
{
if (String.Compare(propertyDescriptor.Name, "Category", true) == 0)
{
int categoryId = (int)bindingContext.ValueProvider["tags"].RawValue;
var product = bindingContext.Model as Product;
product.Category = categories.First(x => x.Id == categoryId);
return;
}
base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
}
}