2009-12-23 75 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