Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从控制器中的HTML.DropDownList获取HTML_C#_Asp.net Mvc_Selectlist - Fatal编程技术网

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

C# 如何从控制器中的HTML.DropDownList获取HTML,c#,asp.net-mvc,selectlist,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。 如何从控制器中的HT

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

试试看

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

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

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

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

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

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


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

为什么您只需在控制器中创建一个方法,返回一个操作结果,它是与您要呈现的视图关联的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)


此外,您还可以加载部分视图,并使用jquery加载在视图的特定部分中进行渲染,而jquery加载只不过是一个名为

的ajax。为什么您只需在控制器中创建一个方法,返回一个操作结果,该结果是与要渲染的视图关联的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)


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

为什么需要html???的ajax而已???。我的意思是,你为什么要尝试完成???我正在打一个AJAX电话,想用一个元素更新一个div。请参阅我的答案,用razor和jquerywhy处理html元素你需要html???。我的意思是,你为什么要尝试完成???我正在打一个AJAX电话,想用一个元素更新一个div。请参阅我的答案,用razor和jqueryBala处理html元素,谢谢你的回复。当我尝试它时,我遇到了以下错误:“System.Web.Mvc.ViewContext”不包含接受4个参数的构造函数。有什么想法吗?@Tarzan查看这个问题的答案,Bala,谢谢你的回答。当我尝试它时,我遇到了以下错误:“System.Web.Mvc.ViewContext”不包含接受4个参数的构造函数。有什么想法吗?@Tarzan看看这个问题的答案