【问题标题】:asp.net mvc2 actionlink with parameters similar to getelementbyidasp.net mvc2 actionlink,参数类似于getelementbyid
【发布时间】:2011-07-21 20:04:14
【问题描述】:

我的Action链接如下: id = "abcd", productURLName = "choc"}, new AjaxOptions { UpdateTargetId = "SFS", InsertionMode = InsertionMode.Replace, HttpMethod = "Post" }, new { style = "color:#00FF00" })%>

我需要在运行时获取控件的值并将其作为参数传递以代替“abcd”。

在 javascript 中我可以做 getelementbyId。在这种情况下我能做些什么吗?

为了获得类似的功能,我也尝试过 jquery ajax,但在这种情况下甚至没有调用控制器动作,至少动作链接有效::

函数发送邀请(){

              var url = "areaName/controllerName/actionName/" + document.getElementById("BasicUserInfo").value + "?productURLName=choc";
              $.post(url, function (data) {
                                        if (data == '<%= Boolean.TrueString %>') {
                                            $("#result").append("Invite Sent");
                                        } else {
                  $("#result").append("Error, Please try later");
                                        }
              });
          }

谢谢 阿纳布

【问题讨论】:

标签: asp.net-mvc-2 actionlink


【解决方案1】:

您必须在链接的点击事件中编写您的 jQuery 代码。例如,这是您的链接:

<%:Html.ActionLink("linkText", "actionName", "controllerName", new {area="areaName",id = "abcd", productURLName = "choc"},  new {@class="myclass", style = "color:#00FF00" })%>

然后你必须编写 jQuery 函数来挂钩这个链接的点击事件。这里我使用类选择器:

 $(".myclass").live('click', function(){
                  var url = "areaName/controllerName/actionName/" + document.getElementById("BasicUserInfo").value + "?productURLName=choc";
                  $.post(url, function (data) {
                                            if (data == '<%= Boolean.TrueString %>') {
                                                $("#result").append("Invite Sent");
                                            } else {
                      $("#result").append("Error, Please try later");
                                            }
                  });
return false;


    });

您还可以使用以下方法在事件处理程序中获取 URL:

var url = $(this).attr('href');

【讨论】:

  • 谢谢,但像这样创建整个链接无济于事,id 的值将来自 javascript "document.getElementById("BasicUserInfo").value" 但 productURL 的值来自 .net .aspx 代码。所以我需要将productURL代码传递给javascript,它将获取id值并创建一个链接然后ajax调用..
  • 你可以把asp.net的东西放在Html.ActionLink中,把其他的东西移到jquery中
  • 得到它,在asp.net中添加了第一个参数,将url发送到js并添加了第二个参数。发送
  • 问题,它会转到控制器但不会返回页面,而是转到使用 html.actionlink 创建的链接( b4 使用 js 连接)。我的控制器代码只返回 True 或 False
  • @Arnab 抱歉,只是忘记了您需要在 click 方法结束时返回 false,因此它不会执行默认操作,该操作当然会转到该特定 url
【解决方案2】:

你可以摆脱 MicrosoftAjax 并尝试这样:

<%= Html.ActionLink(
    "linktext", 
    "actionName", 
    "controllerName", 
    new { area = "areaName", productURLName = "choc" }, 
    new { style = "color:#00FF00", id = "myLink" }
) %>

然后:

$(function() {
    $('#myLink').click(function() {
        var id = $('#BasicUserInfo').val();
        $.post(this.href, { id: id, productURLName: 'choc' }, function(result) {
            $('#SFS').html(result);
        });
        return false;
    });
});

【讨论】:

  • 就我而言,我只能在 asp.net 而不是 js 中获取 productURLName。
猜你喜欢
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
相关资源
最近更新 更多