передать параметр контроллера в представление - PullRequest
0 голосов
/ 12 июля 2011

Каков наилучший способ передачи параметра контроллера в представление? Параметр не связан ни с одной моделью, поэтому не может выполнять строго типизированное представление.

Контроллер:

        public ActionResult DisplayParam(string id, string name)
    {
       return View();
    }

Вид:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<% @ Import NameSpace = "System.IO"%> <% @ Import NameSpace = "Система"%> <% @ Import NameSpace = "System.Data"%> <% @ Import NameSpace = "System.Web"%> <% @ Import NameSpace = "System.Text"%> <% @ Import Namespace = "MY.Controllers"%>

Параметр контроллера

<div>
Controller Parameter id: @id
Controller Parameter name: @name
</div>

1 Ответ

1 голос
/ 12 июля 2011

Лучший способ - использовать модель вида:

public class MyViewModel
{
    public string Id { get; set; }
    public string Name { get; set; }
}

и затем действие вашего контроллера заполняет эту модель представления и передает ее представлению, как показано ниже:

public ActionResult DisplayParam(string id, string name)
{
    var model = new MyViewModel
    {
        Id = id,
        Name = name
    };
    return View(name);
}

и, наконец, ваш тип представления будет строго типизирован для этой модели представления и будет использоваться для отображения информации:

<%@ Page 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewPage<AppName.Models.MyViewModel>" 
%>
<div>
    Controller Parameter id: <%= Html.DisplayFor(x => x.Id) %>
    Controller Parameter name: <%= Html.DisplayFor(x => x.Name) %>
</div>

или если вы использовали движок Razor:

@model AppName.Models.MyViewModel
<div>
    Controller Parameter id: @Html.DisplayFor(x => x.Id)
    Controller Parameter name: @Html.DisplayFor(x => x.Name)
</div>
...