2010-03-26 81 views
1

PHP數組可以通過POST方法捕獲ASP.NET MVC嗎?PHP數組可以通過POST方法捕獲ASP.NET MVC嗎?

查詢字符串:WebAccess的/ ArrayTest中VAL [] = 1 & VAL [] = 2 & VAL [] = 3

我寫:?的ActionResult ArrayTest中(字符串[] VAL)

但這僅工作,如果查詢字符串中刪除「[]」

+0

我一個,和其他用戶的最有可能很多不知道你正在努力實現。 POST不能通過查詢字符串。 – 2010-03-26 13:10:13

回答

1

在DefaultModelBinder內置的ASP.NET MVC無法處理軌/ PHP/jquery1.4風格陣列職位(這是你指的是與VAL [] = 1 & VAL什麼[] = 2 & val [] = 3)。

你必須要麼創建一個自定義模型綁定器(谷歌,大量的實例),或者加算指標括號內像這樣:

val[0]=1&val[1]=2&val[2]=3 

以及指數不能有任何遺漏號碼。

我已經解決了這個問題,只是在提交表單時添加了索引。即在jQuery的:

$('form').find('input, select, textarea').attr('name', function(index, old) { 
    return old.replace(/\[\]/, '[' + index + ']'); 
}); 
0

(不是一個答案 - 但它很難這種使用SO發表評論我要解釋)

您可以通過暗示,這是真的什麼還有很困惑的事情用PHP做。另外,你不會說你爲了使它工作而刪除了哪個'[]'。在落後的ASP程序員,可能會更容易理解:

<form method='POST' action='something.asp'> 
    <input type='text' name='val[]'> 
    <input type='text' name='val[]'> 
    <input type='text' name='val[]'> 
    <input type='submit' value='go'> 
</form> 

使用一些web開發語言從每三個文本字段中的數據隨後提供名爲「VAL」的數組。如何在asp.net中複製這種行爲?

C.

0
public class PhpStyleArrayBinder : DefaultModelBinder,IModelBinder 
    { 
     public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
     { 
      var val = bindingContext.ValueProvider.GetValue(bindingContext.ModelName+"[]"); 
      if (val != null) 
       return val; 
      return base.BindModel(controllerContext, bindingContext); 
     } 
    } 

用法:

public JsonResult Get([ModelBinder(typeof (PhpStyleArrayBinder))] IEnumerable<string> data) 
     { 
      // 
     } 

http://pavelsvetlov.blogspot.com/2016/04/mvcnet-modelbinder-phpstyle-array.html

相關問題