2013-02-24 43 views
1

当我使用jQuery序列化的ID列表我的查询字符串它会产生一个网址,如:MVC控制器 - 获取重复查询,而不使用request.querystring?

mydomain/mypage?id=1&id=2&id=3&id=4 

这里是我的形式看起来像

<div><input type="text" name="id" value="1" /></div> 
<div><input type="text" name="id" value="2" /></div> 
<div><input type="text" name="id" value="3" /></div> 
<div><input type="text" name="id" value="4" /></div> 
<div><input type="text" name="id" value="5" /></div> 

<div><a href="#" id="myLink">CLICK ME!</a></div> 
<script> 
$('#myLink').click(function() { 

//see: http://api.jquery.com/serialize/ 
myids = $('input[name=id]').serialize(); 

alert(myids); 
return false; 

}); 
</script> 

-live演示 - http://jsfiddle.net/yDpu6/2/


当我试图从我的控制器ActionResult获取querstring值时,我只得到第一个id(例如:1),但是当使用Request.Quesrtring [“id”]时,我得到了所有的id(例如:: 1,2,3, 4)。

有没有一种方法可以将所有序列化的ID传递到我的控制器中,而无需使用Request.Quesrtring [“id”]?

+0

请分享你的观点 – 2013-02-24 01:47:15

回答

0

如果我们假定你是下面的代码将会给所有的值,你的假设是错误的

VAR值=( '.classname')VAL()。

您需要在发布id之前将值推送到数组。

查看代码

<input type="text" class="idList" value="1"/> 
<input type="text" class="idList" value="2"/> 
<input type="button" value="Post Values" onclick="javascript:postValues()" /> 
<script type="text/javascript"> 
function postValues() { 
    var values = []; 
    $('.idList').each(function() { 
     values.push($(this).val()); 
    }); 

    postData = { id: values } 

    $.ajax({ 
     type: "POST", 
     url: "/Home/PostIds", 
     data: postData, 
     dataType: 'json', 
     success: function (data) { 
      alert($('.idList').val()); 
     }, 
     traditional: true 
    }); 
} 
</script> 

操作方法的代码

public ActionResult PostIds(List<string> id) 
{ 
    return null; 
} 
+0

你说得对,我是在实施JQuery的解决方案马虎。你做得更好。但我主要是b/c格式方法是更好的选择。包括JQ选项是为了用尽。你真的可以证明为什么这个应该异步实现吗? – 2013-02-24 16:42:59

+0

我不是坚持这只能做asyc,这也可以用表单发布完成。我在说明,如果你正在做asyc回发,不要忘记在发布数据之前将所有值收集到一个数组中。 – 2013-02-25 05:15:16

+0

你会说这是更好的异步处理? – 2013-02-25 06:23:13