2009-12-23 66 views
0

問候, 我想準備一些很好的「機器」從jquery調用asp.net mvc方法。 概念如下:ASP.NET MVC JQuery - 靈活的alghoritm調用asp.net mvc方法

概念是有一個方法每個請求將被調用。通過使用訪問者模式,我將能夠確定我應該做什麼樣的操作。

public interface IRequestVisitor 
{ 
    void VisitRequest_GetPersons(CRequest_GetPersons request); 
    void VisitRequest_RemovePerson(CRequest_RemovePerson request); 
} 

創建一些抽象的要求:

public abstract class CRequest 
{ 
    public abstract void AcceptVisitor(IRequestVisitor visitor); 
} 

和具體要求執行:

public class CRequest_GetPersons: CRequest 
{ 
    public CRequest_GetPersons(Guid schoolROWGUID) 
    { 
     SchoolROWGUID = schoolROWGUID; 
    } 
    public Guid SchoolROWGUID={get;private set;} 

    public override void AcceptVisitor(IRequestVisitor visitor) 
    { 
     visitor.VisitRequest_GetPersons(this); 
    } 
} 

和遊客的implemetation:

public void CRequestVisitor : IRequestVisitor 
{ 
    public CResponse ResponseResult {get;private set;} 

    public void IRequestVisitor.VisitRequest_GetPersons(CRequest_GetPersons request) 
    { 
     //code responsible for getting persons 
     Result = new CResponse_GetPersons_Success(List<Person>) 
    } 
    public void VisitRequest_RemovePerson(CRequest_RemovePerson request) 
    { 
     //code responsible for removing person 
     Result = new CResponse_RemovePerson_Success(); 
    } 
} 

動作每個JS方法將exe可愛如下:

public ActionResult AjaxRequest(CRequest request) 
{ 
    CRequestVisitor visitor = new CRequestVisitor(); 
    request.AcceptVisitor(visitor); 
    return JSON(visitor.Result);//return some result 

} 

我還發現如何MVC asp.net方法可以使用jQuery

<script type="text/javascript"> 
    $(document).ready(function() {   
    $("#GetPerson").click(function() {   
     $.getJSON("/Test/Request", 
     function(data){ 
      //what should be here to display all persons ? 
     //how can i pass guid of school? 
      }); 
     }); 

     }); 
    });  

</script> 

我想知道我可以通過當前所選學校的ROWGUID被調用。 我該如何訪問作爲JSON對象返回的人員列表?

回答

0

可以傳遞參數,將被傳遞到操作方法的參數,通過將其添加到URL:

/測試/請求學校= 1

更換1的GUID,並該guid將被傳回。

+0

ok ..以及如何傳遞整個對象(例如Person類型) – 2009-12-23 18:37:54

+0

另外我不能通過guid。預期的參數是CRequest類型。有任何想法嗎? – 2009-12-23 18:52:54

+1

您無法在get操作中傳遞整個對象;您將不得不使用Html.BeginForm將對象的數據發佈到服務器。 無論哪種方式,您都無法傳遞對象,只能傳遞對象的每個屬性值。因此,您可以將所有屬性值呈現爲HTML元素,並將它們發佈到服務器,並重新加載對象(如果您需要的只是查看操作,則重新裝入對象)。 所以你不能傳遞一個人,而是該人的姓名,地址和所有其他人的財產。 – 2009-12-24 18:59:49