Я новичок в ASP.NET MVC, пришедший из PHP MVC. Это был своего рода неловкий переход (см. Мою историю вопросов, хех.)
Одна вещь, которая мне очень нравится в теории, которая является большой в мире .Net, - это идея о том, что модели не зависят от настойчивости. Но в этом случае, как правильно сохранить изменения в модели? В PHP я бы просто позвонил $model->save();
после некоторого преобразования. В C # я не уверен, как это сделать.
Это уместно?
public class AwesomesauceController
{
//inject!
public AwesomeSauceController(IDataAccess da)
{
DataAccess = da;
}
private readonly IDataAccess DataAccess;
[HttpGet]
public ActionResult Edit(int Id)
{
// PHP equiv: AwesomeSauceModel::find($id); Controller is unaware of DAL
return View(DataAccess.AwesomeSauces.Where( sc => sc.Id == Id).FirstOrDefault());
}
[HttpPost]
public ActionResult Edit(AwesomeSauce sc)
{
//persistence-aware version: model is aware of DAL, but controller is not
if($sc->valid()
$sc->save();
redirect();
}
else { return view(); }
// compare to persistence-agnostic version, controller is aware of DAL, but model is not
if(ModelState.IsValid)
{
da.Persist(sc);
return Redirect();
}
else
{
return View(sc);
}
}
}
Полагаю, единственное, что меня не устраивает, это то, что обычно я не хотел бы, чтобы контроллер получал прямой доступ к уровню доступа к данным таким образом. Ранее, на земле PHP, мои контроллеры, в основном, обращались только к моделям и представлениям.