я вроде застрял с этим кодом:модель привязки в ASP.NET MVC при редактировании сущность
[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult Edit(FormCollection collection, [Bind(Exclude="Id,Latitude,Longitude")]Store bindStore, string Latitude, string Longitude)
{
Store st = storeModel.GetStore(Session["user_id"].ToString());
bool modelUpdate = TryUpdateModel(st, new string[] { "Storename", "Address1", "Address2", "Zipcode", "City", "Phone1", "Phone2", "Store_email", "Store_homepage", "Pm_ec", "Pm_visa", "Pm_master", "Appointment_requirement", "Short_user_store_description" });
if (ModelState.IsValid)
{
storeModel.Save();
return RedirectToAction("ImageUpload");
}
else
return Edit();
}
Моя проблема в том, что я не знаю, Что правильный способ сделать ModelBinding, когда мне нужны эти условия совпадают:
- объект «магазин» имеет несколько полей (не только Id), которые не должны быть обновлены в течение этого обновления (были проблемы, что «TryUpdateModel» NULL-IFIES все эти поля, так я добавил значение «includeProperties» с открытым текстом всех параметров .. решение, которое мне не нравится, в любом случае)
- Получение идентификатор магазина из сессии, как я не хочу, чтобы это было в HTML
Изготовление InputValidation через DataAnnotationModel (см ниже)
[MetadataType(typeof(StoreMetaData))] public partial class Store { } public class StoreMetaData { [Required] [StringLength(5)] public object Storename { get; set; } }
Вопрос: Является ли это правильный подход или есть стандартное/более приятное решение для такого рода проблем?
нет, позволяет сказать, что есть более чем 1 вид и как обновление 50% полей магазина объекта .. – David
являются виды обновляющие одни и те же данные? Можете ли вы подробнее рассказать о своем оригинальном посте со структурой своей программы? –
Я предполагаю, что вы меня не поняли .. речь идет не о представлениях (они просто содержат «некоторые» из полей объекта «store»). Запрос HTTP-Post содержит эти поля, а ModelBinder устанавливает все остальные поля в параметр "bindStore" равен нулю. – David