Asp.net mvc Net MVC-将模型和formcollection合并到对象中以传递给视图
我有一个网站,它使用一个动作方法,将一个页面名传递给get动作方法。在action方法中,它通过pagename找到模型项,并将相关内容返回给视图 我现在已经为此创建了一个POST-action方法,因为我需要在我的联系人页面中使用它。我仍然需要按页面名称查找模型并将其返回到视图。但是,当用户提交联系信息时,我会对查询模型项执行TryUpdateModel,如果无效,则会将错误返回到modelstate,验证摘要显示错误,但不会重新呈现他们提交的任何信息Asp.net mvc Net MVC-将模型和formcollection合并到对象中以传递给视图,asp.net-mvc,Asp.net Mvc,我有一个网站,它使用一个动作方法,将一个页面名传递给get动作方法。在action方法中,它通过pagename找到模型项,并将相关内容返回给视图 我现在已经为此创建了一个POST-action方法,因为我需要在我的联系人页面中使用它。我仍然需要按页面名称查找模型并将其返回到视图。但是,当用户提交联系信息时,我会对查询模型项执行TryUpdateModel,如果无效,则会将错误返回到modelstate,验证摘要显示错误,但不会重新呈现他们提交的任何信息 无论如何,我是否可以返回页面模型并让文本
无论如何,我是否可以返回页面模型并让文本框在模型失败时重新呈现它们以前键入的内容?如果在视图模型中添加一个属性,说明在我的示例中应该绑定到文本框的内容,您可以使用如下内容:
<%=Html.TextBox("Thing", Model.Thing != null ? Model.Thing : string.Empty)
善良
Dan以下是我们如何处理与此问题无关的内容:
private ModelType UpdateModel(Guid id)
{
var dbData = (from m in Repository.SelectAll()
where m.Id == id
select new ModelType
{
Id = m.Id,
Data = m.Data
}).First();
return UpdateModel(dbData);
}
private ModelType UpdateModel(ModelType model)
{
//add other data for view:
model.SelectStuff = new SelectList( //...
// etc.
return model;
}
[HttpGet]
public ActionResult Update(Guid id)
{
return View(UpdateModel(id));
}
[HttpPost]
public ActionResult Update(ModelType model)
{
if (!ModelState.IsValid)
{
return View(UpdateModel(model));
}
// else post to repository
}
我发现我可以使用以下方法:
<input name="ENQ.Name" class="inputText" type="text" maxlength="150" title="Please enter your name" value="<%= ViewData.ModelState["ENQ.Name"] != null ? ViewData.ModelState["ENQ.Name"].Value.AttemptedValue : "" %>" />
我试图避免视图模型与数据库模型分离,但我认为这是唯一可行的方法我认为你是对的;在这种情况下,您需要一个视图模型。好心,丹