C# asp.net mvc应用程序中的事件
控制器C# asp.net mvc应用程序中的事件,c#,javascript,asp.net-mvc-3,C#,Javascript,Asp.net Mvc 3,控制器 IEnumerable<SelectListItem> process = from proc in XDocument.Load("Processes.xml").Descendants("Process") select new SelectListItem { Text = (string)proc.Element("ConfigFile")
IEnumerable<SelectListItem> process =
from proc in
XDocument.Load("Processes.xml").Descendants("Process")
select new SelectListItem
{
Text = (string)proc.Element("ConfigFile")
};
ViewBag.process = process;
IEnumerable进程=
从proc-in
XDocument.Load(“processs.xml”).substands(“Process”)
选择新的SelectListItem
{
Text=(字符串)proc.Element(“配置文件”)
};
ViewBag.process=进程;
看法
@Html.DropDownList(“过程”)
我想处理下拉列表中所选项目的事件
我在谷歌上搜索了一下,人们说没有像普通ASP或WinForm应用程序那样的常规事件处理程序
我不熟悉javascript和jquery,但我能理解一个代码,您可以将此下拉列表放入表单中,使用javascript订阅其
onchange
事件并手动提交此表单:
@using (Html.BeginForm("SomeAction", "SomeController"))
{
@Html.DropDownList("process", Model.Items, new { onchange = "this.form.submit();" })
}
这会将所选值发布到SomeAction,您可以在其中检索它:
[HttpPost]
public ActionResult SomeAction(string process)
{
// the process argument will contain the selected value from the dropdown
...
}
定义“正常”-HTTP是一种无状态请求/响应机制。ASP.NET MVC对于HTTP来说比ASP WebForms更“正常”-这是一个漏洞抽象,使web开发更像WinForms开发。谢谢Darin,非常整洁@使用(Html.BeginForm(“SomeAction”,“SomeController”))一些控制器我会给它我的控制器名称对吗?在PublicActionResult SomeAction(字符串进程)中,此方法是否必须具有返回类型?实际上,我想打开一个带有文本框的新页面,以响应选择的dropdownlist项是的,您应该给出控制器名称。因此,例如,如果您有一个名为
HomeController
的控制器,您将通过Home
。当然,您的操作应该返回ActionResult,所有控制器操作都会返回。“System.Web.Mvc.HtmlHelper”不包含“DropDownList”的定义和“System.Web.Mvc.Html”的最佳扩展方法重载。SelectExtensions.DropDownList(System.Web.Mvc.HtmlHelper,string,string)”有一些无效参数我在@Html.DropDownList(“process”)上遇到此错误,new{onchange=“this.form.submit();”})我已经更新了我的答案。您应该将可用项作为第二个参数传递给DropDownList
帮助程序。如果您使用的是ViewBag或ViewData,您还可以指定:@Html.DropDownList(“process”,(IEnumerable)ViewBag.process,new{onchange=“this.form.submit();”})
,但使用强类型视图模型会更好。
[HttpPost]
public ActionResult SomeAction(string process)
{
// the process argument will contain the selected value from the dropdown
...
}