Webフォームアプリをmvc 4に変換しています。アプリは、マスターページのコードビハインドでかなりの量の処理を行い、ユーザーがロールに基づいて表示できるものと表示できないものを決定し、ページの下部にバージョンを表示しますアセンブリなど。すべてサーバー側。
処理は分離コードではなく、ビューにデータが送信されたコントローラーで行われます。しかし、これが _Layout.cshtml でどのように行われるかは私にはわかりません
どうもありがとう
Webフォームアプリをmvc 4に変換しています。アプリは、マスターページのコードビハインドでかなりの量の処理を行い、ユーザーがロールに基づいて表示できるものと表示できないものを決定し、ページの下部にバージョンを表示しますアセンブリなど。すべてサーバー側。
処理は分離コードではなく、ビューにデータが送信されたコントローラーで行われます。しかし、これが _Layout.cshtml でどのように行われるかは私にはわかりません
どうもありがとう
あなたができるかもしれないことは、ベースコントローラーを使用してOnActionExecuting
メソッドをオーバーライドし、ViewBag
動的プロパティを使用して値を渡すことです_Layout.cshtml
public abstract class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var user = filterContext.Controller.ControllerContext.RequestContext.HttpContext.User;
// do whatever you need to do
ViewBag.CanUserViewSomethingSecret = user.Identity.Name == "Kermit";
}
}
このベースコントローラーをアプリケーションコントローラーで拡張する必要があります
public class HomeController : BaseController
{
public ActionResult Index()
{
return View();
}
}
次に、次のようにプロパティに_Layout.cshtml
アクセスできます...ViewBag
@if(ViewBag.CanUserViewSomethingSecret != null && (bool) ViewBag.CanUserViewSomethingSecret == true)
{
<p>Secret</p>
}