gpt4 book ai didi

c# - 具有相同 Action 名称的多个 Action

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:31 25 4
gpt4 key购买 nike

我的 Controller 中有多个这样的操作

public ActionResult Verify(String email, String name ){
ViewBag.email = email;
ViewBag.name = name;
return View();
}

[HttpGet]
public ActionResult Verify(String uId){
User user = TippNett.Core.User.Get(uId);
user.Active = true;
user.Save();
Auth.Authenticate(user, false);
return RedirectToAction("Index", "Home");
}

第一个 Action 是用户注册时给他看注册信息,请验证邮箱,我是这样称呼的

return RedirectToAction("Verify", "Account", new { email = email, name = user.FirstName});

第二个 Action 在用户点击验证链接时被调用。问题是下面的函数总是被调用。即使我也将电子邮件和名称作为参数传递。

谁能解释为什么会发生这种情况并可能解决这个问题?

最佳答案

您可以使用:

[ActionName("MyOverloadedName")]

基于属性的方法重载:

[RequireRequestValue("someInt")]
public ActionResult MyMethod(int someInt) { /* ... */ }

[RequireRequestValue("someString")]
public ActionResult MyMethod(string someString) { /* ... */ }

public class RequireRequestValueAttribute : ActionMethodSelectorAttribute {
public RequireRequestValueAttribute(string valueName) {
ValueName = valueName;
}
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo) {
return (controllerContext.HttpContext.Request[ValueName] != null);
}
public string ValueName { get; private set; }
}

但是,您必须为相同的 http 方法使用不同的操作名称,因为您只能在使用不同的 http 方法时使用相同的方法。喜欢:

[HttpPost]
public ActionResult Verify(String email, String name ){
}

[HttpGet]
public ActionResult Verify(String uId){
User user = TippNett.Core.User.Get(uId);
user.Active = true;
user.Save();
Auth.Authenticate(user, false);
return RedirectToAction("Index", "Home");
}

关于c# - 具有相同 Action 名称的多个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28410739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com