如果您的 Action 方法的参数名称是id
,
public ActionResult output(string id)
{
//do something
}
那么您可以像这样使用您的表单操作网址。(默认路由将负责休息)
/Shops/output/somestringhere.
如果您有不同的名称,请将其用作查询字符串
public ActionResult output(string name)
{
//do something
}
现在使用您的表单操作网址,例如
/Shops/output?name=somestringhere
关于您的代码的另一个建议是避免使用 Viewdata 呈现下拉菜单。尝试使用强类型视图模型及其将数据传输到视图的属性。还可以尝试将您的 javascript 从您的视图中移开,并使其不显眼。这样您的视图就只能保持干净的标记。
假设您想在文档创建视图中显示修订下拉菜单,请将属性添加到您的视图模型以具有下拉项目。
public class DocumentCreateViewModel
{
//Other properties also here
public List<SelectListItem> Revisions{ set;get;}
public int SelectedRevision { set;get;}
public DocumentCreateViewModel()
{
Revisions=new List<SelectListItem>();
}
}
并在您的 GET 操作中,将下拉内容填充到 Revisions 属性。
public ActionResult Create()
{
var vm=new DocumentCreateViewModel();
vm.Revisions=GetRevisionItemsFromSomeWhere();
return View(vm);
}
在你的强类型视图中,
@model DocumentCreateViewModel
@using(Html.Beginform())
{
@Html.DropDownListFor(x => x.SelectedRevision,
new SelectList(Model.Revisions,"Value","Text"), "Select..")
<input type="submit" />
}
现在要处理下拉更改事件时的表单提交,请添加此脚本。
$(function(){
$("#SelectedRevision").change(function(){
var _this=$(this);
var selectedRevision=_this.val();
$("form#YourFormIDHere")
.attr("action","./Shops/output/"+selectedRevision).submit();
});
});
您可以使用 razor helper method( @Url.Action
) 来获取正确的路径,而不是将 URL 硬编码到商店/输出。