6

http://localhost:49397/ChildCare/SponsorChild/83

これはリンクです。テーブルのアクションリンクをクリックしてアクションの編集にリダイレクトすると生成されます。URLの番号「83」を非表示にしたいと思います。これを実現するにはどうすればよいですか。

私はVS2010MVc4Razorを使用しています、事前に私の悪い英語のおかげで申し訳ありません

4

3 に答える 3

6

リンクを操作する場合、リンクは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

});
于 2013-04-19T14:28:57.223 に答える
5

そのような2つのページを使用して変数を非表示にします

public ActionResult RestoreSavedSession(string id)
    {
        Session["RestoreSavedSession"] = id;
        return RedirectToAction("RestoreSavedSessionValidation");
    }

    public ActionResult RestoreSavedSessionValidation()
    {
        return View("RestoreSavedSessionValidation");
    }

ヒットRestoreSavedSessionすると、パラメータがローカルに保存され、SessionCacheRestoreSavedSessionValidationなどからパラメータを読み取る場所が呼び出されます。

于 2016-05-12T15:56:56.457 に答える
1

プレビューメソッドを使用して、ルートデータを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());
于 2019-09-05T02:30:54.540 に答える