c#-如何在asp.net mvc 4中的apicontroller中使用会话
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-如何在asp.net mvc 4中的apicontroller中使用会话,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2989字,纯文字阅读大概需要5分钟。
内容图文
![c#-如何在asp.net mvc 4中的apicontroller中使用会话](/upload/InfoBanner/zyjiaocheng/681/f3999c5db26146cba8371d3b9c888664.jpg)
我正在使用asp.net mvc 4开发应用程序.在这里,我想使用通过JQuery进行自动填充的扩展程序,我想在其中填充存储在会话中的CityID的所有位置.
这是用于创建会话的功能:
public string Create(string City)
{
try
{
//HttpSessionStateBase Session["c"]=City;
//HttpContext.Current.Session["City"] = City;
System.Web.HttpContext.Current.Session["City"] = City;
long CityID = Convert.ToInt64(System.Web.HttpContext.Current.Session["City"].ToString());
return City;
}
catch (Exception ex)
{
throw (ex);
}
}
当用户从“城市”下拉列表中选择任何城市时,将调用此功能.
我的要求自动完成扩展器的JQuery是:
<script type="text/javascript">
var url = '@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "ProductApi" })';
$('#txtLocation').autocomplete({
source: function (request, response) {
alert(url);
$.ajax({
url: url,
data: { query: request.term },
dataType: 'json',
type: 'GET',
success: function (data) {
response($.map(data, function (item) {
return {
label: item.Name
//value: item.ID
}
}));
}
})
},
select: function (event, ui) {
$('#txtLocation').val(ui.item.label);
//$('#ID').val(ui.item.value);
return false;
},
minLength: 1
});
我的api控制器是:
public class ProductApiController : ApiController
{
SqlConnection cnn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["SQLCONN"].ToString());
[HttpGet]
public IEnumerable<Search> GetProducts(string query = "")
{
cnn.Open();
//string gid = GETSession("t");
long CityID = Convert.ToInt64(System.Web.HttpContext.Current.Session["City"].ToString());
SqlCommand cmd = new SqlCommand("Check_PrefixText", cnn);
cmd.Parameters.AddWithValue("City", CityID);
cmd.Parameters.AddWithValue("@Prefix", query);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
//var result = IEnumerable<City>(query);
Search obj = new Search();
cnn.Close();
return dt.AsEnumerable().Select(row =>
{
return new Search
{
Name = Convert.ToString(row["Name"]),
};
});
}
}
在Global.asax文件中,我编写了2种方法:
protected void Application_PostAuthorizeRequest()
{
if (IsWebApiRequest())
{
HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
}
}
private bool IsWebApiRequest()
{
return HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith(WebApiConfig.UrlPrefixRelative);
}
在webApiConfig类中,我编写如下:
public static string UrlPrefix { get { return "api"; } }
public static string UrlPrefixRelative { get { return "~/api"; } }
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: WebApiConfig.UrlPrefix + "/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
但是,在ApiController中,session [“ City”]的值仍然为空,而session [“ City”]中存储的值显示出来.
解决方法:
将您的API更改为:
[HttpGet]
public IEnumerable<Search> GetProducts(long cityID, string query = "")
{
然后将您的cityID与数据一起传递
data: {
cityID: $("#cityDropDownId :selected").val(),
query: request.term
},
忘记尝试使用“会话”-这不是您要尝试的正确技术.
内容总结
以上是互联网集市为您收集整理的c#-如何在asp.net mvc 4中的apicontroller中使用会话全部内容,希望文章能够帮你解决c#-如何在asp.net mvc 4中的apicontroller中使用会话所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。