Asp.net mvc MVC ActionLink在幕后设置ViewBag
我有一个Asp.net mvc MVC ActionLink在幕后设置ViewBag,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个 @Html.ActionLink("Search text", "Search", new { q="searchtext1" }); 这涉及到: 我想在幕后设置实际的搜索文本是“searchtext2”,因此我试图将此值传递给搜索操作,但仍然显示给用户 在Search操作中,我试图从ViewBag或任何其他机制获取“searchtext2”并显示数据 实际值与url参数不同的原因是,从控制器调用的WCF webservice需要稍微不同的参数来正确显示数据 是否仍然可以使用@Ht
@Html.ActionLink("Search text", "Search", new { q="searchtext1" });
这涉及到:
我想在幕后设置实际的搜索文本是“searchtext2”
,因此我试图将此值传递给搜索
操作,但仍然显示给用户
在Search
操作中,我试图从ViewBag
或任何其他机制获取“searchtext2”并显示数据
实际值与url参数不同的原因是,从控制器调用的WCF webservice需要稍微不同的参数来正确显示数据
是否仍然可以使用
@Html.ActionLink
在幕后传递隐藏值,并在不同的操作中获取该值,而用户不会注意到任何差异 不是直接的,因为ActionLink
只会生成一个URL(一个GET
)
您可以创建一个简短表单,将操作设置为操作链接
url(您可以使用@url.action(“搜索文本”、“搜索”,new{q=“searchtext1”})
),然后设置
。这将为您提供所需的URL,同时传递一个隐藏变量
@using (Html.BeginForm("Search text", "Search", new { q = "searchtext1" })
{
@Html.Hidden("searchtext2", "second search text")
<input type="submit" value="Search!" class="override so i don't look like a button" />
}
@使用(Html.BeginForm(“搜索文本”,“搜索”,新的{q=“searchtext1”})
{
@隐藏(“搜索文本2”,“第二搜索文本”)
}
您必须以稍微不同的方式进行操作-
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(function () {
$('#me').click(function (e) {
e.preventDefault();
$(this).parents('form').first().submit();
});
});
</script>
@using (Html.BeginForm("Search", "Search", new { q = "searchtext1" }, FormMethod.Post))
{
@Html.Hidden("OriginalSearchText", "SearchStringOriginal");
@Html.ActionLink("Search text", "Search", null, new { id = "me" });
}
$(函数(){
$('#me')。单击(函数(e){
e、 预防默认值();
$(this.parents('form').first().submit();
});
});
@使用(Html.BeginForm(“Search”,“Search”,new{q=“searchtext1”},FormMethod.Post))
{
@隐藏(“OriginalSearchText”、“SearchStringOriginal”);
@ActionLink(“搜索文本”,“搜索”,空,新{id=“me”});
}
输出-
在q中,您可以获得查询字符串。是否要使用类似“q=viewbag.something”的内容?如果我这样做,用户将看到URL为/search/searchtext2。我仍然希望向用户显示/search/searchtext1,并将“searchtext2”传递到幕后的目标操作。我希望此链接能帮助您。