2015-12-18 7 views
0

Я новичок в бритве, и мне нужна помощь, чтобы передать имя действия из контроллера для просмотра с помощью ViewBag. Ниже мой код:Как передать имя действия от контроллера для просмотра

public ActionResult Index(int id = 0) 
    { 
     ViewBag.MasterId = id; 
     ViewBag.ActionName = "ApplicationProcess"; 
     return View(); 
    } 

Из приведенной выше методы действия я передаю имя действия, которое используется в виде, что это делают в результате этой функции.

<body> 
    <h2>Index</h2> 
    <div style="width: 1100px;"> 
     <div style="float: left; width: 400px;"> 
      @{Html.RenderAction("MasterRecordProcess", "Process");} 
     </div> 
     <div style="float: right"> 
      @{Html.RenderAction("MasterRecordBasicInfo", "Process", new { id = ViewBag.MasterId });} 
     </div> 
     <div style="float:right;margin-top:50px;" class="task-div"> 
      @{Html.RenderAction(@ViewBag.ActionName, "Process", null);} 
     </div> 
    </div> 
</body> 

Теперь в выше зрения я хочу использовать ViewBag.ActionName передается от контроллера в Html.RenderAction, но это дает мне сообщение об ошибке.

Compilation Error 

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS1973: 'System.Web.Mvc.HtmlHelper<OAC.Areas.Personal.Models.MasterModel>' has no applicable method named 'RenderAction' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax. 

Просьба помочь, как я могу визуализировать имя действия, переданное с контроллера в объекте viewBag. Спасибо.

+3

бросьте в строку - '(строка) ViewBag.ActionName' –

ответ

1

Как @Stephen упоминался вы должны сначала привести содержание вида мешка:

@{ 
    var actionName= (string)ViewBag.ActionName; 
} 

Затем вы можете использовать его:

@{Html.RenderAction(actionName, "Process", null);} 
0

Ошибку сам говорят, что "рассмотреть заливку динамических аргументов или вызов метода расширения без синтаксиса метода расширения. «

C# не поддерживает вызов метода расширения (Html.RenderAction()), если любой из аргументов имеет динамический тип. Вы должны либо вызвать метод расширения статически, либо применить аргумент к нединамическому типу.

В этом случае вы можете ViewBag к String и использовать

Смежные вопросы