2014-01-10 49 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来阻止分配用于传入请求的线程。

相关问题