http://localhost:49397/ChildCare/SponsorChild/83
这是链接,当我单击表中的操作链接并重定向到编辑操作时正在生成该链接,现在我想在 URL 中隐藏数字“83”我该如何实现这一点,
我正在使用 VS2010 MVc4 Razor,抱歉我的英语不好提前谢谢
http://localhost:49397/ChildCare/SponsorChild/83
这是链接,当我单击表中的操作链接并重定向到编辑操作时正在生成该链接,现在我想在 URL 中隐藏数字“83”我该如何实现这一点,
我正在使用 VS2010 MVc4 Razor,抱歉我的英语不好提前谢谢
如果您使用链接,链接通过GET
请求发送到服务器,那么参数在 url 中。你可能有两个选择:
1 - 参数必须在data
属性上data-id="83"
,然后创建一个表单以通过邮寄发送数据,并创建input
带有属性的标签data-x
,例如:
<a href="my/url" data-id="83> link </a>
然后使用 javascript 您需要创建表单:
<form method="POST" action="my/url">
<input value="83 name="id" type="hidden" />
</form>
并使用 JS 表单提交运行事件,例如:jQuery('form').submit()
2 - 您可以在控制器中加密然后解密获取参数:如何在MVC中加密和解密数据?
编辑
第一点的例子:
html:
<div id="container-generic-form" style="display:none;">
<form action="" method="POST"></form>
</div>
<a href="my/url" data-id="83" data-other="blue" class="link-method-post">my link</a>
JS:
$(function() { // document ready
var controlAnchorClickPost = function(event) {
event.preventDefault(); // the default action of the event will not be triggered
var data = $(this).data(),
form = $('#container-generic-form').find('form');
for(var i in data) {
var input = $('<input />', {
type: 'hidden',
name: i
}).val(data[i]);
input.appendTo(form);
}
form.submit();
};
$('a.link-method-post').on('click', controlAnchorClickPost); //jquery 1.7
});
我们使用两个这样的页面来隐藏变量
public ActionResult RestoreSavedSession(string id)
{
Session["RestoreSavedSession"] = id;
return RedirectToAction("RestoreSavedSessionValidation");
}
public ActionResult RestoreSavedSessionValidation()
{
return View("RestoreSavedSessionValidation");
}
您点击RestoreSavedSession
它然后将参数存储在本地并调用它从Session或Cache或其他任何RestoreSavedSessionValidation
地方读取参数的位置。
我使用预览方法将路由数据存储到 TempData,并将其路由到正确的操作。
public async Task<ActionResult> Preview(string act, string ctl, string obj)
{
TempData["Data"] = obj;
return RedirectToAction(act, ctl);
}
使用它
return RedirectToAction("Preview","Controller",new {act="action",ctl="controller",obj=JsonConvet.SerializeObject(obj)});
路由后
var x=JsonConvert.DeserializeObject<T>(TempData["Data"].ToString());