2013-04-04 24 views
31

tôi phải thực hiện một hành động MVC mà được gọi như thế này:Làm thế nào để tôi remap một tham số hành động MVC đến tên tham số khác?

http://address/Controller/MyAction?resName=name 

và nó được gọi bởi một bên thứ ba mà là hardcoded để vượt qua resName. Vì vậy, cách ngây thơ là phải có một hành động như thế này:

ActionResult MyAction(String resName) 
{ 

nhưng tôi nghĩ rằng có một tham số gọi resName là uncool và tôi muốn có nó tên resourceName. Nếu tôi chỉ đổi tên tham số ánh xạ tham số MVC không còn hoạt động nữa và tôi luôn có resourceName đặt thành null khi hành động của tôi được gọi.

tôi đã cố gắng BindAttribute như thế này:

ActionResult MyAction([Bind(Include="resName")] String resourceName) 

nhưng resourceName vẫn là null mỗi khi hành động của tôi được gọi.

Tôi làm cách nào để remap tên tham số của mình?

Trả lời

41

Prefix là những gì bạn cần:

ActionResult MyAction([Bind(Prefix="resName")] String resourceName) 

Tuy nhiên, làm một http://address/Controller/MyAction?resourceName=name sẽ không hoạt động với thiết lập đó.

9

Một tùy chọn khác là sử dụng thư viện ActionParameterAlias. Điều tốt đẹp về nó là cả hai tên cho một tham số nhất định sẽ hoạt động.

ví dụ:

using ActionParameterAlias; 
//... 

    [ParameterAlias("resourceName", "resName", Order = 1)] 
    ActionResult MyAction(String resourceName) 

Sau đó, các cuộc gọi đến bộ điều khiển như http://address/Controller/MyAction?resourceName=namehttp://address/Controller/MyAction?resName=name cả hai sẽ chỉ làm việc tốt.

Các vấn đề liên quan