在我的项目视图中,我从控制器获得了一个带有ajax的字符串变量,我希望使用名为'MakeSeoUrl'的代码隐藏函数处理此字符串,然后将此处理后的值放入名为'titleURL'的变量中。
我认为它可以用作'@ MVCHelper.RouteHelper.MakeSeoUrl(response.BlogEntries [i] .Title);'但这是错误的,它说“回应”不存在。我该怎么办?如何使用javascipt codebehind函数。
观看
$.ajax({
url: "/Map/GetBlogEntries",
type: "post",
datatype: "json",
data: placeMarker,
success: function (response) {
if (response.Success) {
var titleURL;
for(var i = 0; i < response.BlogEntries.length ; i ++){
titleURL =@MVCHelper.RouteHelper.MakeSeoUrl(response.BlogEntries[i].Title);
}
}
else {
//.....
}
},
error: function (xhr, status) {
//......
}
});
AT CONTROLLER
public JsonResult GetBlogEntries(MarkerOfPlace placeMarker)
{
try
{
List<BlogEntry> blogEntries = _blogEntryRepo.GetAll(x => x.IsActive.Value && x.PlaceMarkerID == placeMarker.Id).ToList();
return Json(new { Success = true, BlogEntries = blogEntries});
}
catch (Exception ex)
{
return Json(new { Success = false, Message = ex.Message });
}
}
答案 0 :(得分:0)
JavaScript无法直接调用服务器端方法;你需要使用Ajax。
解决问题的最简单方法是使用SeoUrl
返回匿名类型以及BlogEntry的其他属性。
public JsonResult GetBlogEntries(MarkerOfPlace placeMarker)
{
try
{
var blogEntries = _blogEntryRepo
.GetAll(x => x.IsActive.Value && x.PlaceMarkerID == placeMarker.Id)
.Select(x => new
{
... Map BlogEntry's other properties here
Title = x.Title,
SeoUrl = MVCHelper.RouteHelper.MakeSeoUrl(x.Title)
})
.ToList();
return Json(new { Success = true, BlogEntries = blogEntries });
}
catch (Exception ex)
{
return Json(new { Success = false, Message = ex.Message });
}
}
答案 1 :(得分:0)
您不能在javascript(客户端)中使用服务器端方法。
您应该做的是使用viewmodel并从API操作结果返回已格式化的响应:
public class BlogEntryViewModel
{
// any other properties you need
public string TitleUrl { get; set; }
}
public JsonResult GetBlogEntries(MarkerOfPlace placeMarker)
{
try
{
var blogEntries = _blogEntryRepo.GetAll(x => x.IsActive.Value && x.PlaceMarkerID == placeMarker.Id)
.Select(e => new BlogEntryViewModel {
TitleUrl = MVCHelper.RouteHelper.MakeSeoUrl(e.Title),
// other properties here
})
.ToList();
return Json(new { Success = true, BlogEntries = blogEntries});
}
catch (Exception ex)
{
return Json(new { Success = false, Message = ex.Message });
}
}