我在Asp.net MVC Web应用程序中的视图中有以下内容: -
@Html.TextBoxFor(model => model.Technology2.Tag, new { data_autocomplete_source = Url.Action("AutoComplete2", "Switch") })
将调用AutoComplete2操作方法,并将TextBoxFor的当前值传递给它。我的行动方法如下: -
[CheckUserPermissions(Action = "Edit", Model = "Switch")]
public ActionResult AutoComplete2(string term)
{
var tech = repository.AllFindTechnolog(term).OrderBy(p => p.Tag).Select(a => new { label = a.Tag }).ToList();
return Json(tech, JsonRequestBehavior.AllowGet);}
现在提出了一个新的要求,即应该有两个单选按钮(Tag& Serial)来确定用户是否需要使用序列号的标签号进行自动完成。我当前的字段将传递标签号。所以我如何强制Url.Action根据单选按钮选择引用不同的动作方法,或者传递单选按钮值并将其传递给相同的动作方法。
由于
答案 0 :(得分:0)
我会使用HiddenField来存储单选按钮的值,并通过URL操作链接传递隐藏字段值。
这不是razor语法,但它显然仍然有效,如果您愿意,可以转换它。
@Html.HiddenFor(x => x.Hidden, new { id = "hf" });
<input type="radio" name="rb" value="1" onclick="change()"/>
<input type="radio" name="rb" value="2" onclick="change()"/>
<input type="radio" name="rb" value="2" onclick="change()"/>
在JQuery中捕获Change事件并设置隐藏字段值。
function change() {
$('input[name="rb"]').click(function () {
$("#hf").val(this.value);
});
}
你应该能够像这样传递它
@Html.TextBoxFor(model => model.LastNamex,
new { data_autocomplete_source = Url.Action("AutoComplete2", "Switch",
new { id = Model.Hidden }) })
答案 1 :(得分:-1)
使用条件运算符选择URL。
@Html.TextBoxFor(model => model.Technology2.Tag, new { data_autocomplete_source = $("#radio_1").prop("checked")?Url.Action("AutoComplete2", "Switch"): otherURL })