【问题标题】:rename mvc model object in Razor View在 Razor 视图中重命名 mvc 模型对象
【发布时间】:2012-10-17 19:21:15
【问题描述】:

我使用的是 MVC 4,通常 Visual Studio 会为您创建所有视图。我有一个只有一个字段的表单,我只想将创建表单嵌入到索引视图中。

所以索引视图有类似@model IEnumerable<Models.LinkModel>

所以我通过遍历模型集合来访问它。

但是,如果我尝试为创建操作嵌入表单,我需要 @model Models.LinkModel 它也由 Model.Name 访问。有没有办法做到这一点或使用不同的变量名?

好的,这里有一些额外的信息。

所以我有一个模型。

public class LinkModel
{
   public string LinkUrl {get;set;}
}

我有一个具有 Create 和 Index ActionResults 的控制器。

现在在索引视图中我有

@model IEnumerable<Models.LinkModel>

@{
    ViewBag.Title = "Links";
}

我可以做所有我喜欢的逻辑来列出所有链接。

@foreach(link in Model)
{
    <p>link.LinkUrl<p>
}

创建视图有这个

@model Models.LinkModel // Note that it is just one item not IEnumerable

@{
    ViewBag.Title = "Add Link";
}

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)

    <fieldset class="editor-fieldset">
        <legend>LinkModel</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.LinkUrl)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.LinkUrl)
        </div>
       <p>
        <input type="submit" value="Add Link" />
       </p>
    </fieldset>
}

现在为一个字段创建一个表单似乎很愚蠢。我想把这个表格放在索引页面上。问题是我使用变量 Model 访问对象。我想知道是否有办法拥有两个单独的实例或能够访问具有不同名称的模型对象。

【问题讨论】:

  • 我真的不知道你在这里问什么。你需要澄清你的想法并更详细地解释你想要什么。
  • 为什么关门了?我添加了额外的信息?
  • 因为你的问题仍然没有任何意义。我们不知道您所说的“一种拥有两个单独实例或能够访问具有不同名称的模型对象的方法”是什么意思。
  • 因为没听懂?接受的答案能够得到它。

标签: asp.net-mvc razor asp.net-mvc-4


【解决方案1】:

有一个包含项目列表和一个用于创建的单个项目的复合模型

public class  IndexModel {
   public LinkModel CreateModel {get; set;}
   public IEnumerable<LinkModel> Items {get; set;}
}


@model IndexModel
@using(Html.BeginForm("create")) {
   @Html.EditorFor(m => m.CreateModel.Name);
}
@foreach(var item in Model.Items) {
  @item.Name
}

【讨论】:

  • 我想我只是缺少一些小东西。我得到了显示项目的索引,但是当我创建它时,它只返回索引视图并且没有点击我的创建操作。我签入了 Fiddler,当我点击提交时它只是在发布 /Link/Index。
  • 您的 BeginForm 调用是什么样的?它应该将“创建”作为第一个参数
  • 是的,我需要 BeginForm("Create","LinkControllerName") 中的参数,非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 2012-02-12
  • 2015-07-07
  • 1970-01-01
相关资源
最近更新 更多