http://localhost:49397/ChildCare/SponsorChild/83
これはリンクです。テーブルのアクションリンクをクリックしてアクションの編集にリダイレクトすると生成されます。URLの番号「83」を非表示にしたいと思います。これを実現するにはどうすればよいですか。
私はVS2010MVc4Razorを使用しています、事前に私の悪い英語のおかげで申し訳ありません
http://localhost:49397/ChildCare/SponsorChild/83
これはリンクです。テーブルのアクションリンクをクリックしてアクションの編集にリダイレクトすると生成されます。URLの番号「83」を非表示にしたいと思います。これを実現するにはどうすればよいですか。
私はVS2010MVc4Razorを使用しています、事前に私の悪い英語のおかげで申し訳ありません
リンクを操作する場合、リンクはGET
リクエストによってサーバーに送信され、パラメーターはURLに含まれます。2つのオプションがあるかもしれません:
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-コントローラーでgetパラメーターを暗号化してから復号化できます:MVCでデータを暗号化および復号化する方法は?
編集
ポイント1の例:
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
});
そのような2つのページを使用して変数を非表示にします
public ActionResult RestoreSavedSession(string id)
{
Session["RestoreSavedSession"] = id;
return RedirectToAction("RestoreSavedSessionValidation");
}
public ActionResult RestoreSavedSessionValidation()
{
return View("RestoreSavedSessionValidation");
}
ヒットRestoreSavedSession
すると、パラメータがローカルに保存され、SessionやCacheRestoreSavedSessionValidation
などからパラメータを読み取る場所が呼び出されます。
プレビューメソッドを使用して、ルートデータを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());