2016-11-02 160 views
0

我需要将ID传递给我的控制器,但我不知道如何使用我编写的代码来完成此操作。将锚值传递给控制器​​

这是我CSHTML文件:

<script> 
    $(document).on("click", "#getDetails", function (e) { 
     $.ajax({ 
       url: '/Home/GetDetails', 
       contentType: 'application/html; charset=utf-8', 
       type: 'POST', 
       dataType: 'html' 
      }) 
      .success(function(result) { 
       $('#detailsPlace').html(result); 
      }) 
      .error(function(xhr, status) { 
       alert(status); 
      }); 
    }) 
</script> 

<table class="table"> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td> 
       @*<input type="hidden" value="@item.Id" name="partId"/>*@ 
       <a href="javascript:void(0)" value="@item.Id" id="getDetails">@Html.DisplayFor(modelItem => item.Description)</a> 
      </td> 
     </tr> 
    } 
</table> 

<div id="detailsPlace"></div> 

这里是我的控制器:

[HttpGet] 
public ActionResult Index() 
{ 
    var response = _test.GetParts("A"); 
    return View(response); 
} 

public ActionResult GetDetails() 
{ 
    return PartialView(); 
} 

我只是想从

<a href="javascript:void(0)" value="@item.Id" id="getDetails">@Html.DisplayFor(modelItem => item.Description)</a> 

到我GetDetails(传递值)控制器方法。

回答

0

锚没有“价值”。

因此,您应该做的第一件事可能就是将该值存储在数据属性中。喜欢的东西:

<a href="javascript:void(0)" data-value="@item.Id" id="getDetails"> 

然后在你的AJAX调用,你可以从数据属性获取它,并将它传递给服务器。喜欢的东西:

$.ajax({ 
    url: '/Home/GetDetails', 
    contentType: 'application/html; charset=utf-8', 
    type: 'POST', 
    data: 'myValue=' + $('#getDetails').data('value') 
    dataType: 'html' 
}) 

并在控制器动作,您可以预期myValue值。例如:

public ActionResult GetDetails(string myValue) 

您可以使用任何名称和数据类型在整个过程中都适用,这些只是示例。当然,还有其他方法可以做到这一点。但只需发布一个像这样的单个键/值对就可以工作。


注:看起来你正在使用一个静态的HTML id在一个循环。如果多个元素具有相同的id,那么您的HTML无效,并且该HTML上的JavaScript行为未定义。 id值在HTML中应该是唯一的。

您可能更适合切换到class。例如:

<a href="javascript:void(0)" data-value="@item.Id" class="getDetails"> 

当然,您必须相应地调整您的选择器(JavaScript,CSS等)。并获得所单击可能并不需要在所有选择的元素的值,这可以很好的工作:

$(this).data('value') 

有可能也可以由其它化,更具语义改进,如用一个按钮而不是锚,因为这不是真的是表现为锚。

+0

它仍然没有超过价值,我只是把它作为一个按钮? –

+0

我只是尝试了它使用一个按钮,并使用value属性,它仍然没有工作 –

+0

@LukeRayner:嗯,将元素从'a'改为'button'不是一个魔术棒。您可能需要/需要对代码进行其他更改以适应该更改。至于这个“不工作”,你能更具体吗?你做了什么确切的改变?当你调试这个时,它在哪里/具体是否失败? – David