如何从控制器中的HTML.DropDownList获取HTML

时间:2011-12-22 15:38:48

标签: c# asp.net-mvc selectlist

我想从控制器中的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?

3 个答案:

答案 0 :(得分:2)

为什么你只是在你的控制器中创建一个方法来返回一个动作结果,它是与你要渲染的视图相关联的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

答案 1 :(得分:1)

Controller中没有“HTML DropDownList”。 HTML在通过视图之前尚未呈现。 (事实上​​,你明确地不应该想要与原始HTML或Controller中的任何视图级功能有任何关系。这些问题应该明确分开。)

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

还有一个更大的问题...... 为什么你需要这样做?正如我所说,控制器不应该知道或关心将从中生成的视图。实际上,Controller也应该可以重复用于其他视图。因此,如果我们退一步,可能会有更好的方法来解决您面临的根本问题。

答案 2 :(得分:0)

尝试

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