1

我有一个从 getJSON 方法调用的 http 控制器。它的工作非常好。但现在我想在控制器方法的处理程序中执行相同的操作。我通过 getJSON 向处理程序发送一个值,它使用该值执行。

这是我的getJSON

$(document).ready(function () {
    $.getJSON('ProfileHandler.ashx', { 'ProfileName': 'Profile 1' }, function (data) {
        $.each(data, function (k, v) {
            alert(v.Attribute+' : '+v.Value);               
        });            
    });
});

这是我的处理程序

public void ProcessRequest(HttpContext context)
    {
        try
        {                
            string strURL = HttpContext.Current.Request.Url.Host.ToLower();
            //string ProfileName = context.Request.QueryString["profilename"];
            string strProfileName = context.Request["ProfileName"];

            GetProfileDataService GetProfileDataService = new BokingEngine.MasterDataService.GetProfileDataService();
            IEnumerable<ProfileData> ProfileDetails = GetProfileDataService.GetList(new ProfileSearchCriteria { Name = strProfileName });
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            string strSerProfileDetails = javaScriptSerializer.Serialize(ProfileDetails);
            context.Response.ContentType = "text/json";
            context.Response.Write(strSerProfileDetails);
        }
        catch
        {
        }                        
    }

如何调用“ProfileName”并将其传递给控制器​​方法?

4

2 回答 2

3

您的代码是正确的,您应该能够使用以下内容检索 ProfileName:

string strProfileName = context.Request["ProfileName"];

如果你想将它传递给控制器​​动作,只需定义这个动作:

public ActionResult SomeAction(string profileName)
{
    var profileDataService = new BokingEngine.MasterDataService.GetProfileDataService();
    var request = new ProfileSearchCriteria { Name = profileName };
    var profileDetails = profileDataService.GetList(request);
    return Json(profileDetails, JsonRequestBehavior.AllowGet);
}

然后使用 AJAX 调用您的控制器操作:

<scirpt type="text/javascript">
    $(document).ready(function () {
        var url = '@Url.Action("SomeAction")';
        $.getJSON(url, { profileName: 'Profile 1' }, function (data) {
            $.each(data, function (k, v) {
                alert(v.Attribute + ' : ' + v.Value);
            });            
        });
    });
</script>
于 2013-03-12T06:35:29.107 回答
0

你几乎拥有它。这是一个例子:

Javascript

function someFunction(e) {
    $.post("@Url.Action("MethodName", "ControllerName")", { ParameterName: e.value }, function(data) {
       $("#someDiv").html = data;
    });
}

C# 控制器

[HttpPost]
public ActionResult MethodName(string ParameterName)
{
    return "Hello " + ParameterName;
}

如果您将您的姓名传递给 JavaScript 函数“someFunction”,控制器将返回“Hello [your name]”。帮助?

于 2013-03-12T06:41:10.947 回答