如何调用某些控制器的方法并从查询字符串传递参数
How to call some Controller's method and pass a parameters from a query string
在我的应用程序中,我生成了这样的 url:
http://www.test.com/?mail=test%40gmail.ba&code=71147ff9-87ae-41fc-b53f-5ecb3dbe5a01
我生成 Url 的方式如下:
private string GenerateUrl(string longUrl, string email, string confirmCode)
{
try
{
// By the way this is not working (Home/MailConfirmed) I'm getting message
// Requested URL: /Home/MailConfirmed
// The resource cannot be found.
string url = longUrl + "/Home/MailConfirmed";
var uriBuilder = new UriBuilder(url);
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
query["mail"] = email;
query["code"] = confirmCode;
uriBuilder.Query = query.ToString();
uriBuilder.Port = -1;
url = uriBuilder.ToString();
return url;
}
catch (Exception ex)
{
return "Error happened: " + ex.Message;
}
}
In longUrl I'm passing www.test.com, in email I'm passing
test@gmail.com and so on..
有关于我网站的信息:
www.test.com
mail:test@gmail.com
确认码:71147ff9-87ae-41fc-b53f-5ecb3dbe5a01
并且在我的 HomeController.cs
中有一个方法应该从查询字符串中取出参数 - url 并将其传递给应该通过邮件获取用户来激活用户帐户的方法(邮件是唯一)并将此 guid 与数据库中的 guid 进行比较。所以我想知道如何调用这个方法?
所以我的方法是这样的:
public JsonResult MailConfirmed(string mail, string confirmCode)
{
try
{
// Here I will get user and update it in DB
return Json("success", JsonRequestBehavior.AllowGet);
}
catch(Exception ex)
{
return Json("fail", JsonRequestBehavior.AllowGet);
}
}
所以我的问题是用户如何点击关注 link 并调用我的方法.. ?
非常感谢
干杯
为了导航到您的 MailConfirmed()
,您的 url 需要
http://www.test.com/Home/MailConfirmed?mail=test%40gmail.ba&confirmcode=71147ff9-87ae-41fc-b53f-5ecb3dbe5a01
注意控制器和动作名称的段,code=xxx
应该是 confirmcode=xxx
以匹配方法中的参数名称。
您可以通过使用 UrlHelper
方法生成 url) 来简化代码(并删除 GenerateUrl()
方法)。
要生成上述 url,您在控制器方法中只需要
string url = Url.Action("MailConfirmed", "Home",
new { mail = email, confirmcode = confirmCode },
this.Request.Url.Scheme);
在我的应用程序中,我生成了这样的 url:
http://www.test.com/?mail=test%40gmail.ba&code=71147ff9-87ae-41fc-b53f-5ecb3dbe5a01
我生成 Url 的方式如下:
private string GenerateUrl(string longUrl, string email, string confirmCode)
{
try
{
// By the way this is not working (Home/MailConfirmed) I'm getting message
// Requested URL: /Home/MailConfirmed
// The resource cannot be found.
string url = longUrl + "/Home/MailConfirmed";
var uriBuilder = new UriBuilder(url);
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
query["mail"] = email;
query["code"] = confirmCode;
uriBuilder.Query = query.ToString();
uriBuilder.Port = -1;
url = uriBuilder.ToString();
return url;
}
catch (Exception ex)
{
return "Error happened: " + ex.Message;
}
}
In longUrl I'm passing www.test.com, in email I'm passing test@gmail.com and so on..
有关于我网站的信息:
www.test.com
mail:test@gmail.com
确认码:71147ff9-87ae-41fc-b53f-5ecb3dbe5a01
并且在我的 HomeController.cs
中有一个方法应该从查询字符串中取出参数 - url 并将其传递给应该通过邮件获取用户来激活用户帐户的方法(邮件是唯一)并将此 guid 与数据库中的 guid 进行比较。所以我想知道如何调用这个方法?
所以我的方法是这样的:
public JsonResult MailConfirmed(string mail, string confirmCode)
{
try
{
// Here I will get user and update it in DB
return Json("success", JsonRequestBehavior.AllowGet);
}
catch(Exception ex)
{
return Json("fail", JsonRequestBehavior.AllowGet);
}
}
所以我的问题是用户如何点击关注 link 并调用我的方法.. ?
非常感谢 干杯
为了导航到您的 MailConfirmed()
,您的 url 需要
http://www.test.com/Home/MailConfirmed?mail=test%40gmail.ba&confirmcode=71147ff9-87ae-41fc-b53f-5ecb3dbe5a01
注意控制器和动作名称的段,code=xxx
应该是 confirmcode=xxx
以匹配方法中的参数名称。
您可以通过使用 UrlHelper
方法生成 url) 来简化代码(并删除 GenerateUrl()
方法)。
要生成上述 url,您在控制器方法中只需要
string url = Url.Action("MailConfirmed", "Home",
new { mail = email, confirmcode = confirmCode },
this.Request.Url.Scheme);