4

私はかなり単純なシナリオを持っています

コントローラーにそのような構文のアクションメソッドがあります

[HttpPost]
    public ActionResult Consignment(string txtConsNo, string isReferenceTracking)
    {}

このアクションメソッドにアクセスする必要があるアプリケーションでハイパーリンクを作成する必要があるページではありません。HTML.ActionLink メソッドを使用して、このようなハイパーリンクを作成しています

        @Html.ActionLink((string)item.RDC_CONSNO, "Consignment", "Tracking", new { txtConsNo = (string)item.RDC_CONSNO, rdbConsNo = "" }, null)

しかし、それはこのようなリンクを作成します

http://localhost:3412/Tracking/Consignment?txtConsNo=100245506

これをどのように回避すればよいですか?

ありがとう

4

3 に答える 3

2

あなたには2つの選択肢があると思います....

  1. 属性を削除し[HttpPost]ます(私の意見では好ましい)
  2. jqueryを使用して投稿: $.post()

jqueryアプローチを行う方法は次のとおりです(必要な場合)

HTML:

<a href="#" class="postToConsignment" 
            data-consno="@item.RDC_CONSNO">@item.RDC_CONSNO.ToString()</a>

JavaScript(ビューにある必要があります):

$(function(){
    $('.postToConsignment').on('click', function(e){
        // Stop links normal behaviour
        e.preventDefault();

        //Get the url to post to
        var url = '@Url.Action("Consignment", "Controller")';

        //Get consNo
        var consNo = $(this.data('consno');

        $.post(url, new { txtConsNo: consNo}, function(data) {
            //Deal with the result (i.e. the data param)
        });
    });
});
于 2013-01-19T21:01:09.470 に答える
2

itemリンクをループでレンダリングしているモデルの代わりに使用していると思いますか?いずれにせよ、フォームを追加してリンクを投稿することをお勧めします。リンクは次のようになります。

@Html.ActionLink(
    (string)item.RDC_CONSNO,
    "Consignment", 
    "Tracking",
    new { @class = "consignmentLink" });

...次に、ループ (ある場合) の後に、次のように、フォームとワイヤアップ JavaScript を配置します。

@using (Html.BeginForm("Consignment", "Tracking"))
{
    @:<input type="hidden" id="txtConsNo" name="txtConsNo" />
}

$("a.consignmentLink").click(function(e) {
    e.preventDefault();
    var $consignmentNumberInput = $("#txtConsNo");
    $consignmentNumberInput.val($(this).text());
    $consignmentNumberInput[0].form.submit();
});

アクションのisReferenceTrackingパラメーターを入力するには、別の隠しフィールドを追加し、その値を各リンクの data- 属性として持つことができます。

于 2013-01-19T21:23:54.523 に答える
1

また、ボタンを使用することもできます。
たとえば、asp コア構文では次のようになります。

//some other tags
 <form method="post">
      <input asp-for="YourModelPropertyOrYourMethodInputName"
      value="@TheValue" type="hidden" />
      <button type="submit" class="link-button" formaction="/TheDestinationController/TheDestinationActionMethod">
      @(TextValue) 
      </button>
  </form>
于 2016-11-21T13:04:48.720 に答える