@model 用於 MVC4 上的 _layout.cshtml?
我想知道是否有辦法為 _layout.cshtml 文件指定模型,我看到很多文章都有基本相同的問題,人們用“替代”解決方案回复,不是說不可能,也不是展示我們如何能達到這個
對網路表單有一些經驗我一直在嘗試遷移到 MVC 並且經常發現自己有這樣的問題,我找到了這個網站:http ://blog.bitdiff.com/2012/05/sharing-common-view-model -data-in.html 部分解決了我的問題,但即使他們也沒有將他們的 _layout.cshtml 與@model 綁定,據我所知,如果我想訪問 SharedContext,我必須在每個視圖上指定一個模型,如果我錯了,請糾正
我想做的是在 _layout.cshtml 上聲明一個“@model Namespace.MyModel”,這樣它就可以自行檢索其資訊,而不必為從 LayoutModel 繼承的每個視圖實現一個模型
*我希望我很清楚,基本上,我想知道如何在 _layout.cshtml 上聲明 @model 標記,以便它可以訪問自己的模型
使用我之前連結的解決方案(即使它沒有連結到我的問題)我必須這樣做:@(((BaseController)ViewContext.Controller).Context.Property) 來獲取共享資訊,如果我可以簡單地聲明(和使用)@model 代替,我可以通過執行以下操作來完成相同的事情:@Model.Property*
正如你所看到的,我正在努力將我已經知道的東西從 webforms 遷移到 MVC,這對我來說非常困難,因為我必須採用與我習慣的完全不同的某些做法
提前致謝
即使您已經接受了答案,但根據您的說法,您只是在提取圖像 URL,您應該使用 JQuery,而不是模型來完成。
此程式碼未經測試,對此表示歉意。如果我輸入了錯誤,請隨時指出。包含背景圖像的 HTML 元素具有該
id="url"屬性,因此選擇器可以工作。控制器
[HttpGet] public string GetSessionUrl() { //logic to detmine url return url; }jQuery
$(document).ready(function () { var $url = $('#url'); var options = { url: "/Home/GetSessionUrl", type: "get", async:false }; $.ajax(options).done(function (data) { $url.attr('src', data); }); });
您應該使用部分視圖將“需要模型”的佈局部分委託給單獨的控制器,並且
RenderAction:@Html.RenderAction("SomeAction", "LayoutController")有
LayoutController.SomeActionreturn aPartialViewResult,然後您可以將其強輸入到模型中。