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

我猜你有两个选择......

  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参数,您可以添加另一个隐藏字段并将该值作为每个链接的数据属性。

于 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 回答