2014-02-19 55 views
0

我對MVC還是比較陌生的,我發現每個新概念都是一場鬥爭,所以請原諒我,如果這是一個過於簡單的概念,或者這個問題以前曾經被問過很多次(我試圖找到其他例子)。如何將模型傳遞給局部視圖並加載特定記錄?

我有幾種模式可以使用jQuery的「對話框」從我的共享佈局中調用。各模態是簡單地與連接到它這樣的局部視圖一個DIV:

<div id="JoinDialog" title="Join the Contractor Network" style="display: none;"> 
    @Html.Partial("_JoinPartial") 
</div> 

,被稱爲如下:

$(".ClickToJoin").click(function() { 
     $(function() { 
      $("#JoinDialog").dialog({ width: "auto", height: "auto"}); 
     }); 
    }); 

我添加了一個「檔案」模態的佈局中,我想要將用戶的數據插入INPUT值。爲此,我認爲我需要傳入一個模型,並通過控制器加載我想要的數據。由於我目前在「共享」文件夾中有這個局部視圖,我想我還需要將它移動到我的一個視圖文件夾,我可以將它附加到控制器上?

任何在正確的方向微調將不勝感激。

回答

1

由於我目前在「共享」文件夾,這部分觀點,我認爲 我還需要將其移動到我的查看文件夾,我 可以將其連接到控制器的一個?

不,您不需要將局部視圖移動到控制器文件夾。您可以使用共享文件夾本身的局部視圖(View Engine也查看共享文件夾以查找匹配的視圖)。這裏有雲樣品的例子 -

比方說你有一個模型,像這樣的 -

public class MyModel 
{ 
    public string Name { get; set; } 
} 

然後你有一個動作返回從共享文件夾的局部視圖 -

public ActionResult GetPartial() 
    { 
     MyModel model = new MyModel(); 
     model.Name = "Rami"; 
     return PartialView("TestPartial", model); 
    } 

然後在這樣的共享文件夾中有局部視圖 -

@model YouModelNamespace.MyModel 
<div>@Model.Name</div> 

然後在實際頁面上,你可以有以下代碼 -

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

@{ 
    Html.RenderAction("GetPartial"); 
} 

這將顯示在頁面上的部分視圖的結果,如下面的截圖所示。

enter image description here

0

當你必須渲染視圖(或部分視圖)時,asp.net mvc會有一些默認命令來查找它。首先asp.net mvc將搜索你正在執行的控制器的相應視圖的文件夾,如果沒有找到,asp.net mvc搜索共享文件夾。因此,如果您在Views/Product(用於示例)文件夾和共享文件夾上有一個名爲_JoinPartial的視圖,它將優先查看文件夾。有時你會得到一個異常的意見沒有被發現,在有消息你可以看到所有的地方,asp.net的MVC找到它,樣品:

enter image description here

在你的情況下,控制器可以返回的局部視圖

public ActionResult GetJoinPartial() 
{ 
    return PartialView("_JoinPartial"); 
} 

既然你已經在View文件夾中,它將使用它,而不是使用SharedView文件夾中的partialView。

相關問題