0

コードをステップ実行した後、collection.Get("username"); を確認しました。以下のコードでは null です。これは、投稿パラメーターがコントローラーに組み込まれていないことを意味します。誰でも問題を見つけることができますか?

コントローラ:

public ActionResult Admin(uint id, FormCollection collection) {
    var username = collection.Get("username");
    var password = collection.Get("password");
    Helper.CreateUser(username,password);
    return View("AdministerUsers");
}

意見:

<% using (Html.BeginForm()){ %>
    <fieldset>
    <legend>Fields</legend>
    <label for="username">username</label>
    <%= Html.TextBox("username") %>
    <label for="password">password:</label>
    <%= Html.TextBox("password") %>
    </fieldset>
    <input type="submit" value="Add User" name="submitUser" />
<% } %>

ルーティング:

routes.MapRoute(
    "Admin",
    "Admin/{id}",
    new { controller = "Administration", action = "Admin"}
);
4

2 に答える 2

1

asp.net mvcの方法で実行し、モデルにビューを強く入力することができます

モデル:

 public class ViewModel
    {
      public string Username {get; set;}
      public string Password {get; set;}
    }

ビューを強く入力します。

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<ViewModel>" %>  //the ViewModel will need to have it's fully qualified name here

次に、mvcのデフォルトのモデルバインディングを使用します。

<% using (Html.BeginForm()){ %>

    <%= Html.LabelFor(m => m.Username) %>
    <%= Html.TextBoxFor(m => m.Username) %>

    <%= Html.Label(m => m.Password) %>
    <%= Html.TextBoxFor(m => m.Password) %>

    <input type="submit" value="Add User" name="submitUser" />
<% } %>

コントローラ:

[HttpPost]
public ActionResult Admin(ViewModel model) 
{
    var username = model.Username;
    var password = model.Password;
    Helper.CreateUser(username,password);
    return View("AdministerUsers");
}
于 2012-09-14T18:02:16.557 に答える
0

FormCollection には、Username または Password に対応するプロパティがありません。MVC バインディングは、リフレクションを使用してオブジェクトを参照し、投稿されたデータがどこにバインドされるかを判断します。

したがって、あなたの場合、この署名に切り替えると問題が解決するはずです:

 public ActionResult Admin(uint id, string username, string password)
 {
      // .. Do your stuff
 }

パラメータには、投稿するフォーム要素の名前と一致する「ユーザー名」と「パスワード」が含まれているため、それらに含まれるデータはこれらの変数にバインドされます。

于 2012-09-14T17:33:06.620 に答える