【问题标题】:How do I get the HTML from an HTML.DropDownList in the controller如何从控制器中的 HTML.DropDownList 获取 HTML
【发布时间】:2016-03-22 07:56:07
【问题描述】:

我想从控制器中的 Html.DropDownList 获取 HTML。这是我到目前为止的代码:

var binMasters = repository.LoadBinsByZone(12345);
var ddl = new SelectList(binMasters, "BinID", "BinCode");
string result = ddl.ToString();
return result;

结果是“System.Web.Mvc.SelectList”而不是 HTML。 如何从控制器中的 Html.DropDownList 获取 HTML?

【问题讨论】:

  • 为什么需要 html???.我的意思是,你为什么要努力完成???
  • 我正在进行 AJAX 调用并希望使用
  • 查看我使用 razor 和 jquery 处理 html 元素的答案

标签: c# asp.net-mvc selectlist


【解决方案1】:

为什么你只是在你的控制器中创建一个方法来返回一个动作结果,它是与你想要呈现的视图相关联的 html

//this if you want get the html by get
public ActionResult Foo()
{
    return View();
}

而客户端是这样调用的

$.get('your controller path', parameters to the controler , function callback)

$.ajax({
    type: "GET",
    url: "your controller path",
    data: parameters to the controler
    dataType: "html",
    success: your function
    });

您还可以加载部分视图,并使用 jquery 加载在视图的特定部分进行渲染,这只不过是一个称为 ajax 的调用

【讨论】:

    【解决方案2】:

    Controller 中没有“HTML DropDownList”。 HTML 直到通过视图才被渲染。 (事实上​​,您特别不应该希望与原始 HTML 或控制器中的任何视图级功能有任何关系。这些问题应该明确分开。)

    它向您显示"System.Web.Mvc.SelectList" 的原因是因为您正在对引用对象(ddl 类型为System.Web.Mvc.SelectList)调用.ToString()object 上的.ToString 的默认行为是返回类的名称。 (这是有道理的,因为 object 不知道它的后代可能会提供哪些其他功能。)

    还有一个更大的问题……为什么你需要这样做?正如我所说,控制器不应该知道或关心将从它生成的视图。事实上,Controller 也应该可被其他 View 重用。所以我突然想到,如果我们退后一步,可能有更好的方法来解决您面临的根本问题。

    【讨论】:

      【解决方案3】:

      试试

      var Html = new HtmlHelper(new ViewContext(ControllerContext, new WebFormView(""), new ViewDataDictionary(), new TempDataDictionary()), new ViewPage());
      var result = Html.DropDownList("dropDownList", ddl).ToHtmlString();
      

      【讨论】:

      • 巴拉,谢谢你的回复。当我尝试它时,我得到了这个错误:'System.Web.Mvc.ViewContext' 不包含带有 4 个参数的构造函数。有什么想法吗?
      • @Tarzan 查看这个问题的答案stackoverflow.com/q/621235/273200
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      相关资源
      最近更新 更多