【问题标题】:How can I pass email id to action method as parameter using @Html.ActionLink?如何使用@Html.ActionLink 将电子邮件 ID 作为参数传递给操作方法?
【发布时间】:2015-04-22 04:44:40
【问题描述】:

Index.chtml 页面本身我有这个链接

@Html.ActionLink("Edit","EditUserProfile",new {vchUserID = item.vchUserID})

内部用户控制器本身

// GET: /User/ViewUserProfile/1
public ActionResult EditUserProfile(string userID = "abdul@kareems.com")
{
    LIVE_USER objUserFind = db.LIVE_USER.Find(userID);

    if (objUserFind == null)
    {
        return HttpNotFound();
    }

    return View(objUserFind);

}

//
//POST: /Admin/EditAdminProfile/1
[HttpPost]
public ActionResult EditUserProfile(LIVE_USER objUserFind)
{
    if (ModelState.IsValid)
    {
        db.Entry(objUserFind).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(objUserFind);
}

RouteConfig.cs 文件本身我有如下 url 结构

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{vchUserID}",
            defaults: new { controller = "Admin", action = "Index", vchUserID = UrlParameter.Optional /*kareem removed vchUserID = UrlParameter.Optional*/         }
        );

我得到的结果是: *HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、名称已更改或暂时不可用。*

【问题讨论】:

  • 你的问题有点混乱。是否要使用 @Html.ActionLink 调用方法并将用户电子邮件 ID 作为参数传递给控制器​​方法?还是要根据用户id从控制器方法中返回email id给视图?

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing


【解决方案1】:

控制器方法中的参数名称需要与路由中定义的参数名称相匹配。目前该参数在路由中命名为vchUserID,但在您的控制器方法中,您将其命名为userId

这意味着控制器方法永远不会从 Url 获取值,并且您将始终获取默认值“abdul@hibrise.com”。 (我猜这不是您的实时用户之一,所以您返回的是 HttpNotFound 结果)

尝试重命名控制器方法中的参数,如下所示:

public ActionResult EditUserProfile(string vchUserID = "abdul@hibrise.com")
{
    ...
}

【讨论】:

  • 谢谢;你绝对正确,问题是正确的,但后来我在这里的某个地方找到了。 @Html.ActionLink("Edit","EditUserProfile",new {vchUserID = item.vchUserID})
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2019-11-08
  • 2015-04-19
  • 2020-07-03
  • 1970-01-01
相关资源
最近更新 更多