2012-09-30 102 views
4

我使用的是MVC 4,通常Visual Studio會爲您創建所有視圖。我有一個只有一個字段的表單,我只想將創建表單嵌入到索引視圖中。在剃刀視圖中重命名mvc模型對象

所以索引視圖具有類似@model IEnumerable<Models.LinkModel>

所以我通過模型集合迭代訪問它。

但是,如果我嘗試爲創建操作嵌入表單,我需要@model Models.LinkModel 並且它也由Model.Name訪問。有沒有辦法做到這一點或使用不同的變量名?

好的,這裏有一些額外的信息。

所以我有一個模型。

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

我有一個控制器具有創建和索引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對象。

+1

我真的不知道你問這裏。你需要澄清你的想法,並更詳細地解釋你想要什麼。 –

+0

這是爲什麼關閉?我添加了額外的信息? – Danny

+0

因爲你的問題仍然沒有任何意義。我們不知道你的意思是「有兩個獨立的實例還是能夠訪問具有不同名稱的Model對象」。 –

回答

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 
} 
+0

我想我只是缺少一些小東西。我得到的索引顯示的項目,但是當我創建它只是返回索引視圖,並沒有打我的創建操作。我檢查了Fiddler,當我點擊提交時,它只是發佈/鏈接/索引。 – Danny

+0

你的BeginForm調用是什麼樣的?它應該有「創建」作爲第一個參數 – Betty

+0

是的,這是我需要參數在BeginForm(「創建」,「LinkControllerName」)非常感謝幫助。 – Danny