2010-07-27 25 views
0

我目前已經配置兩條路由:openrasta如何制定頁面的動作?

 

    ResourceSpace.Has.ResourcesOfType() 
        .AtUri("/patient") 
        .And 
        .AtUri("/patient/cardId/{cardId}") 
        .HandledBy() 
        .AsJsonDataContract() 
        .And 
        .RenderedByAspx("~/Views/Patient.aspx"); 


       ResourceSpace.Has.ResourcesOfType() 
        .AtUri("/product") 
        .And 
        .AtUri("/product/tagValue/{tagValue}") 
        .HandledBy() 
        .AsJsonDataContract() 
        .And 
        .RenderedByAspx("~/Views/Product.aspx"); 
 

當使用這種代碼

 

using (scope(Xhtml.Form(Resource).ID("AddPatientForm").Method("post"))) { 
 

對於患者它的作用轉化爲

行動= 「/患者」

和用於產品

action =「/ produ ct/tagValue「

我在做什麼錯?我可以提示它,我在源代碼中查看了一下,Action是一個URI,所以我不能通過Action來設置它。

任何幫助,將不勝感激!

回答

0

對於患者,如果資源具有cardId,則應首先選擇該URI。如果沒有,這是一個錯誤。

有關產品,這是definitly的錯誤(除非你的產品類有空的tagValue /空的),所以請http://youtrack.codebetter.com/issues/OR

同時填補新的bug跟蹤bug報告,你可以簡單地做的Xhtml (Resource.CreateUri(new {cardId = value});

+0

那麼這不是我真正想要的,我想我不認爲Seb,我有另一個看看通過源。 TemplatedUriResolver.FindBestMatchingTemplate 它回來與我的URI的p產品,產品/ tagValue和產品,然後選擇FirstOrDefault,但對於Patient,只有患者纔會返回。 我想出了爲什麼,不知道我誤解了,(可能),我的 ProductResource我有一個名爲TagValue的屬性,所以該方法在創建窗體時撿起它,但對於PatientResource它沒有調用CardId,所以它沒有拿起它。 我已經更改了屬性名稱。 – Sarkie 2010-07-28 11:09:00