2014-01-10 50 views
0

我打電話給控制器操作,在允許他/她在Zendesk上打開票證(我們需要檢查客戶維護合同是否處於活動狀態)之前檢查客戶序列號。您可以在下面找到代碼。檢查ASP.NET MVC中的客戶數據

  • 如何從控制器操作中打開URL?
  • 什麼ActionResult我需要返回後?

謝謝。

public ActionResult OpenTicket(string serialNumber, string version) 
{ 
    if (customerSubscription.IsExpired == false)   
    { 
     // need to open this URL 
     // https://devdept.zendesk.com/tickets/new?ticket[fields[111111]]=" + serialNumber + "&ticket[fields[222222]]=" + version); 
    } 
    else 
    { 
     // display an error page with upsell options 
    } 

} 
+2

看起來你需要重定向到不同的路線。 –

+0

你可以請你分享一個你建議的例子的鏈接嗎? – abenci

+1

你想重定向還是要加載這個URL服務器端?如果你想重定向,[使用'重定向完整的URL和'RedirectToAction'使用路由](http://stackoverflow.com/questions/12198909/what-is-the-difference-between-redirect-and- redirecttoaction-in-asp-net-mvc)還可以考慮改進問題的標題。 – Stijn

回答

2

要重定向到某些URL,你可以使用來自基地控制器Redirect方法。要將某些錯誤返回給View,您可以在ModelState上添加錯誤並將其發送到View。看代碼波紋管與評論:

public ActionResult OpenTicket(string serialNumber, string version) 
{ 
    if (!customerSubscription.IsExpired)   
    { 
     // use the Redirect method from base controller 
     return Redirect("https://devdept.zendesk.com/tickets/new?ticket[fields[111111]]=" + serialNumber + "&ticket[fields[222222]]=" + version); 
    } 
    else 
    { 
     // display an error page with upsell options 
     ModelState.AddModelError("ErrorKey", "Custom error message"); 
     // it will return OpenTicket view, otr pass a name you want to return 
     return View(); 

     // if you redirect here, you will lose the ModelState. 
    } 
} 

在你看來,你可以:

@Html.ValidationSummary() 
1

您有2個選項這取決於你想要把外部服務調用。

  1. 服務器檢測到期限並通知用戶刷新其訂閱。然後用戶轉到外部服務URL,刷新訂閱並手動返回到您的站點

  2. 服務器檢測的期滿,自動呼叫外部服務刷新用戶的訂閱,並執行隨後的業務邏輯具有用戶預訂活性。用戶配置了ActionResult並進一步交互。

CASE 1: 使用重定向,並提供外部服務URL

return Redirect(urlString) 

CASE 2:內 使用外部服務呼叫:1.您的控制器或2委託business_logic /服務層。在SOAP通信的情況下,添加服務引用或使用svcutil.exe生成代理,否則可以使用HttpWebRequestSee)。爲了獲得性能,您可以考慮使用asynchronous approach來阻止分配用於傳入請求的線程。

相關問題