2012-11-30 50 views
0

我在我的asp.net MVC應用程序,它有如下一個的onSuccess回調Ajax表單:發送Java腳本函數參數ASP.NET MVC的輔助方法

function onSuccessReport(context) 
     { 
      $('reportChart').empty(); 

      var [email protected](context.Expenses); 
} 

我定義的HTML幫助其接受一個字符串操縱它並返回一個字符串。

我傳遞給onSuccessReport什麼,是具有這樣的結構的JSON結果:

enter image description here

,但我不能發送context.Expenses和應用程序將引發語法錯誤。

如何發送一個JavaScript變量給我的幫手?

感謝

編輯: 錯誤在我看來

****錯誤1名 '語境' 並不在當前的背景下存在****

C#方法

json = json.Replace("\"Date\":", string.Empty); 

      json = json.Replace("\"Total\":", string.Empty); 

      json = json.Replace('}', ']'); 

      json = json.Replace('{', '['); 

      return MvcHtmlString.Create(json); 
+1

什麼語法錯誤,你得到什麼? – Bogdan

+0

我編輯了這個問題,並寫了錯誤 –

回答

1

實際上,如果您使用Ajax,則可以將JavaScript值發送到服務器端。不要像你那樣使用你的幫助器方法,只要把它改成Controller內的一個動作就可以返回一些Json(可以是字符串,數字,對象等等)。以下是您可能會嘗試的一個示例。

查看

function onSuccessReport(context) 
    { 
     $('reportChart').empty(); 
     var expenses = context.Expenses; 
     $.getJSON('@Url.Action("GetStrippedString", "ControllerName")', { expenses: expenses }, function (data) { 
      //pending what you pass back as data, do whatever with it 
      alert(data); 
     }); 
} 

控制器

public JsonResult GetStrippedString(string expenses) 
{ 
    var result = string.Empty; 
    //Do something to string 
    return Json(result, JsonRequestBehavior.AllowGet); 
} 
+0

我聲明瞭一個java變量來保存來自GetStrippedString的數據,並在其他函數中使用該變量。在調用getJSON之後,我調用了該函數,但是看起來geJson在該函數之後被調用了。 –

+0

您可以發佈示例嗎?我想嘗試追查邏輯,看看什麼時候應該調用,以確保其他函數不會首先被觸發。 – IyaTaisho

+1

我找到了解決方案,問題是與異步阿賈克斯呼籲 –

2

您正在將客戶端代碼(javascript)與服務器端代碼(HtmlHelper)混合使用。您不能將客戶端變量傳遞給服務器端助手。如果context變量僅在客戶端上已知,那麼您將不得不編寫客戶端JavaScript函數而不是服務器端助手。因此,將您在此Html.GetStrippedString幫助程序中編寫的邏輯轉移到您可以從腳本調用的JavaScript函數中。

+0

即時通訊不熟悉的Java腳本,所以不能幫助編寫像C#方法的替換函數我解釋了我的問題? –

+0

根據顯示的輸入,該功能應該返回什麼? –

+0

謝謝@Darin問題解決了 –