我对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() {...}
答案 0 :(得分:1)
通过事物的声音(当你更改它发布的控制器时起作用),它可能与“用户”是某种类型的保留字有关。
有点意义,用户在asp.net框架中用来引用当前的IPrincipal对象。
所以是的,将你的控制器重命名为不同的东西。
HTHS, 查尔斯
答案 1 :(得分:0)
尝试在CreateUser
中添加断点,然后查看Request.Form(或QueryString)或ValueProvider的内容。键可能不同。