2009-04-20 59 views
10

Có rất nhiều ví dụ cho mô hình ràng buộc trong các biểu mẫu html, nhưng tôi tự hỏi nếu nó có thể, và nếu như vậy làm thế nào để sử dụng mô hình ràng buộc cho các yêu cầu ActionLinks/GET.Yêu cầu mô hình và yêu cầu GET?

Vì vậy, đưa ra mô hình sau

public class Lurl 
{ 
    public string Str {get;set;} 
    public char Chr {get;set;} 
    public double Dbl {get;set;} 
} 

và các tuyến đường sau (tôi không chắc chắn cách này sẽ được hình thành; tôi trình bày nó để hiển thị như thế nào tôi muốn URL trình bày các tính chất Str, Chr và Dbl)

routes.MapRoute(
    "LurlRoute", 
    "Main/Index/{str}/{chr}/{dbl}", 
    new 
    { 
     controller = "Main", 
     action = "Index", 
     lurl = (Lurl)null 
    } 
); 

tôi muốn sử dụng nó theo cách này trong điều khiển của tôi

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index(Lurl lurl) 
{ 
    /* snip */ 
} 

một d theo cách này trong trang của tôi (hai tùy chọn có thể; có nhiều hơn không?)

<div class="links"> 
    <%Html.ActionLink("Link one", "Index", new { lurl = Model })%><br /> 
    <%Html.ActionLink("Link two", "Index", 
     new { str = Model.Str, chr = Model.Chr, dbl = Model.Dbl })%> 
</div> 

Điều này có thể thực hiện với cơ sở hạ tầng ràng buộc mô hình không? Và nếu có, cần phải làm gì với các mẫu của tôi để làm cho chúng hoạt động?

Trả lời

5

Tôi nghĩ rằng bạn sẽ phải chọn một trong hai lớp như một cách tiếp cận tham số

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index(Lurl lurl) 
{ 
    /* snip */ 
} 

hoặc các thuộc tính như các thông số tiếp cận

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult Index(string str, char chr, double dbl) 
{ 
    /* snip */ 
} 

... mặc dù trong lớp như một cách tiếp cận tham số , bạn có thể sử dụng phương thức "UpdateModel". Bạn có thể chuyển vào danh sách trắng các thông số bạn muốn cập nhật bằng phương pháp đó chỉ trong trường hợp bạn chỉ muốn cập nhật một vài giá trị trong mô hình của mình.

Ngoài ra, trong MapRoute của bạn, thông số nào sẽ lurl ánh xạ tới đường dẫn tuyến đường của bạn? Tôi khá chắc chắn phải có một mối tương quan một với một.

3

Bạn cũng có thể sử dụng custom model binder. Cũng đọc this.

+0

Ngoài ra +1 cho một câu hỏi tuyệt vời! –

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