【问题标题】:Passing a parameter in Action Link mvc razor在 Action Link mvc razor 中传递参数
【发布时间】:2017-07-21 12:09:46
【问题描述】:

我正在尝试将值传递到操作链接中以调用 Iframe 中的控制器方法,这是我的代码:

控制器:

    public ActionResult CallFastPay(string monateryAmount)
            {

//some code logic here
            }

查看:

@{
    ViewBag.Title = "FastPay";
    var url = ViewBag.url;
}
<h2>FastPay</h2>
<script src="~/Scripts/jquery-3.1.1.min.js"></script>

<script type="text/javascript">

    $(function() {
        $('#myButton').click(function () {
            var url = '@Url.Action("CallFastPay")'

            var amount = document.getElementById("monateryAmount").value

            $('#myFrame').attr(@Url.Action("CallFastPay", amount));
        });
    });
</script>
<br />
<iframe id="myFrame" width="600" height="500"></iframe>
<br />
<span>Amount</span>
<input type="text" class="form-control" id="monateryAmount" name="monateryAmount" />
<br />
<button id="myButton" onclick="">Submit</button>

我收到当前上下文中不存在数量的错误。任何帮助将不胜感激。

【问题讨论】:

  • 如果你 console.log 的数量,你会得到什么?它是未定义的还是有值的?
  • 是的,它在文本框中插入了值
  • 你不能像这样混合剃须刀代码(你的@Url.Action())和javascript变量(amount)。一个在服务器上执行,另一个在浏览器上执行
  • 有什么解决办法吗?我做了很多研究,但真的一无所获
  • 你可以使用ajax调用来调用方法和传递参数

标签: javascript c# asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

使用如下:因为你的语法错误。

$('#myButton').click(function () {
    var amount = $("#monateryAmount").val();
  $.ajax({
        url:'@Url.Action("CallFastPay","ControllerName")',
        data:{'monateryAmount':amount},
       type:Get,
       success:function()
        {
         //Your success message here
        }
       error:function()
        {
         //Your error message here
        }
      });
});

【讨论】:

  • 请查看how to answer 并更新您的答案以提供更多详细信息。具体来说,如果您解释一下这是如何解决问题的,将会很有帮助
【解决方案2】:

如果要在 iframe 中显示结果,则需要设置 src 属性。

在您的 razor 视图中,您可以使用您的操作链接设置基本 url,并设置 javascript:

<script type="text/javascript">

    var baseUrl = '@Url.Action("CallFastPay")'; 

    $('#myButton').click(function () {            

        var amount = $('#monateryAmount').val();
        var url = baseUrl + '/' + amount;

        $('#myFrame').attr('src', url);
    });
});
</script>

【讨论】:

    【解决方案3】:

    像这样改变你的脚本,

     $('#myButton').click(function () {
          //var url = '@Url.Action("CallFastPay")'
          var amount = $("#monateryAmount").val();
          $.ajax({
           url:"YourControllerName/CallFastPay/"+amount,
           //Or you can write like this, url: url + '/' + amount,
           type:"Get",
           success:function(data)
            {
             //Your success message here, for example
             alert("Amount submitted successfully!");
            }
           error:function(data)
            {
             //Your error message here
            }
          })
        });
    

    希望对你有帮助!

    【讨论】:

    • 请查看how to answer 并更新您的答案以提供更多详细信息。具体来说,如果您解释一下这是如何解决问题的,将会很有帮助
    • 我必须在成功和错误部分编码什么?抱歉这个愚蠢的问题,但我对 ajax 调用很陌生
    • 请问,您是否从您的操作方法返回任何数据或消息?
    • 请查看我更新的答案。我在那里添加了一条警报消息。你可以在任何地方展示任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2018-07-23
    • 2012-09-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多