2017-08-17 64 views
0

我的項目視圖中,我從控制器中獲得了一個帶有ajax的字符串變量,我想用名爲「MakeSeoUrl」的代碼隱藏函數處理此字符串,然後將此處理值放入名爲'titleURL'的變量。如何在MVC中調用並處理JavaScript內部的代碼隱藏函數

我認爲它可以用作'@ MVCHelper.RouteHelper.MakeSeoUrl(response.BlogEntries [i] .Title);'但它是錯誤的,它說'迴應'不存在。我該怎麼辦?如何使用javascipt代碼隱藏功能。

AT VIEW

$.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 [email protected](response.BlogEntries[i].Title); 
          } 

         } 
         else { 
          //..... 
         } 
        },       
        error: function (xhr, status) {        
         //...... 
        } 
       }); 

AT控制器

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

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 }); 
    } 
} 
+0

其工作原理非常感謝您的關注=) – pinyil

0

您不能在javascript(客戶端)中使用服務器端方法。

你應該做的,而不是,是用一個視圖模型,並從您的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 }); 
    } 
} 
+0

其工作原理非常感謝你的利息=) – pinyil

相關問題