Asp.net mvc 在不使用Ajax或Jquery的情况下从Html.DropDownListFor获取值?
我试图将一个值作为参数从dropdownlist传递给控制器方法。以下代码不起作用:Asp.net mvc 在不使用Ajax或Jquery的情况下从Html.DropDownListFor获取值?,asp.net-mvc,asp.net-mvc-4,razor,html.dropdownlistfor,html-select,Asp.net Mvc,Asp.net Mvc 4,Razor,Html.dropdownlistfor,Html Select,我试图将一个值作为参数从dropdownlist传递给控制器方法。以下代码不起作用: @using (Html.BeginForm()) { <fieldset> <legend>Submit</legend> <div class="editor-field"> @Html.DropDownListFor(m => m.ClientId, new SelectList(Mo
@using (Html.BeginForm())
{
<fieldset>
<legend>Submit</legend>
<div class="editor-field">
@Html.DropDownListFor(m => m.ClientId, new SelectList(Model.Clients, "ClientId", "Name"))
@Html.ValidationMessageFor(model => model.ClientId)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
当我在表单上单击submit时,控制器方法不会触发。没有在数据库中创建发票,没有重定向到“完成”。我在这方面很在行,所以如果你有时间,请仔细解释我需要做什么。这个控制器触发然后重定向是非常重要的。谢谢大家。这是假设您的所有路由设置正确。使用视图上的无参数
Html.BeginForm()
,您正在发布与加载相同的操作。我猜您的SaveInvoice
操作与加载页面时使用的操作不同
尝试重载用于加载HTML表单的操作,或使用类似于
HTML.BeginForm(“SaveInvoice”、“{controller name here}”)
的方法。这是假设所有路由都已正确设置。使用视图上的无参数Html.BeginForm()
,您正在发布与加载相同的操作。我猜您的SaveInvoice
操作与加载页面时使用的操作不同
尝试重载用于加载HTML表单的操作,或使用类似于
HTML.BeginForm(“SaveInvoice”,“此处的{controller name}”)
的方法。问题可能是您没有在HTML.BeginForm中指定正确的控制器。尝试显式添加操作和控制器。(我不知道你的控制器的名称,所以我发明了一些东西,请填写正确的值)
@使用(Html.BeginForm(“保存发票”、“您的控制器名称”))
{
提交
@DropDownListFor(m=>m.ClientId,新选择列表(Model.Clients,“ClientId”,“Name”))
@Html.ValidationMessageFor(model=>model.ClientId)
}
另一种可能是您的验证正在阻止表单提交。检查您的数据是否有效(或暂时删除验证程序)问题可能是您没有在Html.begin中指定正确的控制器。尝试显式添加操作和控制器。(我不知道你的控制器的名称,所以我发明了一些东西,请填写正确的值)
@使用(Html.BeginForm(“保存发票”、“您的控制器名称”))
{
提交
@DropDownListFor(m=>m.ClientId,新选择列表(Model.Clients,“ClientId”,“Name”))
@Html.ValidationMessageFor(model=>model.ClientId)
}
另一种可能是您的验证正在阻止表单提交。检查您的数据是否有效(或暂时删除验证程序)如果您在Fiddler打开时尝试单击“提交”,它是否会生成请求?如果您在Fiddler打开时尝试单击“提交”,它是否会生成请求?
[HttpPost]
public ActionResult SaveInvoice(string ClientId)
{
//some code here
return RedirectToAction("SaveInvoice/Complete", new { id = invoice.InvoiceId });
}
@using (Html.BeginForm("SaveInvoice", "yourControllerName"))
{
<fieldset>
<legend>Submit</legend>
<div class="editor-field">
@Html.DropDownListFor(m => m.ClientId, new SelectList(Model.Clients, "ClientId", "Name"))
@Html.ValidationMessageFor(model => model.ClientId)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}