加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在Razor View中重命名mvc模型对象

发布时间:2020-12-16 06:22:36 所属栏目:asp.Net 来源:网络整理
导读:我正在使用MVC 4,通常Visual Studio会为您创建所有视图.我有一个只有一个字段的表单,我想将创建表单嵌入到索引视图中. 因此,索引视图具有类似@model IEnumerable Models.LinkModel的内容. 所以我通过迭代模型集合来访问它. 但是如果我尝试为创建操作嵌入表单
我正在使用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访问对象.我想知道是否有一种方法可以有两个单独的实例或能够访问具有不同名称的Model对象.

解决方法

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

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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读