c# - 如何在 Html.Editor 中直接加载 Object additionalViewData 的值?

标签 c# asp.net-mvc asp.net-mvc-3

在 Html.Editor(技术上是 EditorExtensions.Editor)中有一个带有

签名的重载
public static MvcHtmlString Editor(
    this HtmlHelper html,
    string expression,
    Object additionalViewData
)

您应该如何使用 additionalViewData? MSDN 文档根本不清楚。

我的第一个想法是:

@Html.Editor("quijibo", new { quijibo = "homer simpson"})

但是这不起作用,所以我现在不知所措。

编辑: 将问题修改为 How do you directly load a value from Object additionalViewData in Html.Editor?我想要一个放在 additionalViewData 中的值用作该编辑器的数据值。

最佳答案

@Html.Editor("quijibo", new { quijibo = "homer simpson" })

在相应的编辑器模板中,您可以从 ViewData 获取值:

@ViewData["quijibo"]

或 ViewBag,如​​果您愿意:

@ViewBag.quijibo

完整示例:

型号:

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

Controller :

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            Name = "abc"
        };
        return View(model);
    }
}

查看:

@Html.Editor("Name", new { foo = "bar" })

在被调用的编辑器模板中(~/Views/Shared/string.cshtml):

@model string
<span>@Model</span>
<span>@ViewData["foo"]</span>

我个人建议您使用采用 lambda 表达式的强类型助手 Html.EditorFor 而不是 Html.Editor

关于c# - 如何在 Html.Editor 中直接加载 Object additionalViewData 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5538944/

相关文章:

c# - 设计决策 : Communicating from a Method

c# - 有没有办法输入数字而不立即显示它们?

c# - Windows Phone 7 - 列表框按钮的功能

c# - asp.net mvc 和 Controller 服务架构

c# - 统一点击检测游戏对象

c# - Request.Files - 无需 foreach 循环即可获取第一个文件

c# - 将区域文件夹中的页面设置为asp.net core 2.2 MVC中的默认页面

asp.net - 如何操作 IIS7 提供的静态文件

c# - 在字符串 [] 中返回用户所属的所有 Active Directory 组的列表

asp.net - 在 _LogonPartial 中显示模型数据