首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将模型和表单集合合并到对象中,以传递给ASP.Net

将模型和表单集合合并到对象中,以传递给ASP.Net
EN

Stack Overflow用户
提问于 2009-11-23 21:18:57
回答 3查看 1.7K关注 0票数 1

我有一个网站,使用一个行动的方法,其中传递一个页面名到获取行动的方法。在action方法中,它通过页面名称查找模型项,并将相关内容返回给视图。

我现在已经为此创建了一个POST action方法,因为我需要在我的联系人页面中使用它。我仍然需要通过页面名称找到模型并将其返回到视图,但是,当用户提交联系信息时,我对我的查询模型项执行TryUpdateModel,如果无效,它会将错误返回到模型状态中,验证摘要会显示错误,但他们提交的任何信息都不会重新呈现。

有没有什么办法可以让我返回页面模型,并让textboxes在模型失败时重新呈现它们之前键入的内容?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-23 22:08:50

下面是我们要做的(去掉对这个问题不重要的东西):

代码语言:javascript
代码运行次数:0
运行
复制
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
}
票数 0
EN

Stack Overflow用户

发布于 2009-11-23 21:29:30

如果您为视图模型添加了一个属性,该属性应该绑定到文本框(在我的示例中为Thing),您可以使用如下内容:

代码语言:javascript
代码运行次数:0
运行
复制
<%=Html.TextBox("Thing", Model.Thing != null ? Model.Thing : string.Empty)

仁慈,

票数 0
EN

Stack Overflow用户

发布于 2009-11-23 22:20:42

我想我可以使用以下方法:

代码语言:javascript
代码运行次数:0
运行
复制
<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 : "" %>" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1783087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档