Asp.net mvc 在不使用Ajax或Jquery的情况下从Html.DropDownListFor获取值?

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

我试图将一个值作为参数从dropdownlist传递给控制器方法。以下代码不起作用:

@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>
}