Asp.Net MVC - 奇怪的表格/控制器问题

时间:2009-06-24 15:16:21

标签: asp.net asp.net-mvc

我对ASP.Net MVC有一个非常奇怪的问题。

我有一个表单,它将3个文本值发布到名为create user的操作方法中(为简单起见,请注意以下内容);

public ActionResult CreateUser(string FirstName, string LastName, string Email)
    {
        var s = FirstName + LastName + Email;

        return RedirectToAction("Index");
    }

也说我的表格是

    <% using (Html.BeginForm("CreateUser", "User"))
   { %>

    <%=Html.TextBox(("FirstName")) %>
    <%=Html.TextBox(("LastName")) %>
    <%=Html.TextBox(("Email")) %>

    <div><input type="submit" value="Submit" /></div>

<% } %>

现在在我的action方法中,在用户控制器上,FirstName,LastName和Email的值都为null!

但是,如果我将相同的方法复制到另一个控制器(游戏),并更新表单以在那里发布,方法中的值不为空!我完全被这个困扰了。

两个控制器都是相同的 - 它们继承了相同的基类,应用了相同的属性等。

编辑:让它工作(不确定底层问题是什么)。

我在用户控制器上的Index方法上有一个自定义属性(这实际上解析了HttpContext.Current.User.Identity.Name属性并自动将其传递给方法)。出于某种原因,这在Index方法上存在问题,一旦我将其删除,一切都按预期开始工作!

这是我之前的Index方法:

[Authorisation]
public Action Index(string userName){...}

之后

public Action Index() {...}

2 个答案:

答案 0 :(得分:1)

通过事物的声音(当你更改它发布的控制器时起作用),它可能与“用户”是某种类型的保留字有关。

有点意义,用户在asp.net框架中用来引用当前的IPrincipal对象。

所以是的,将你的控制器重命名为不同的东西。

HTHS, 查尔斯

答案 1 :(得分:0)

尝试在CreateUser中添加断点,然后查看Request.Form(或QueryString)或ValueProvider的内容。键可能不同。