0

aspnet mvc3 でページを作成しました。すべてのユーザー情報をリストとして表示します。このリストを何とかしたい。各項目に属するいくつかのチェックボックスがあります。いくつかのチェックボックスをクリックして送信ボタンを押すと、リスト全体をコレクションとして投稿し、このコレクションの各アイテムをデータベースに保存します。インターネット上にはいくつかの注意事項がありますが、正確な解決策はありません。UserDto があります。これを使用して、すべてのセクションでユーザー データを転送したいと考えています。

誰かがこれについて完全な解決策を持っていますか、または彼らは何か考えを与えることができますか?

前もって感謝します。

ケレム

4

2 に答える 2

0

コードをいくつか追加しました。リードセンテンスが何であるかを見ることができます。

これは私のインデックスビューの詳細です:

@model List<DomainModel.UserApprovalDto>
@{
    ViewBag.Title = "Manage Users";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
    Manage Users</h2>
<div>@Html.Partial("_PartialManageUsers", (List<DomainModel.UserApprovalDto>)Model)        </div>

これは私の部分的なビューの詳細です:

    @model  List<DomainModel.UserApprovalDto>
@using (Html.BeginForm("ConfirmUsers", "ManageUsers", FormMethod.Post))
{
    <table>
    <tr>
        <th>
        Name
        </th>
        <th>
        Is Reported
        </th>
    </tr>
    @for (int i = 0; i < Model.Count(); i++)
    {
        <tr>
        <td>
            @Html.DisplayFor(modelItem => Model[i].FirstName)
        </td>
        <td>
            @Html.CheckBox("IsReported", Model[i].IsReported.HasValue ? Model[i].IsReported.Value : false)
            @*@Html.CheckBoxFor(modelItem => Model[i].IsReported.Value);*@ @*    @if (Model[i].IsReported != null)
            {
            @Html.CheckBoxFor(modelItem => Model[i].IsReported.Value);
            }
            else
            {
            @Html.CheckBoxFor(modelItem => Model[i].IsReported.Value);
            }*@
        </td>
        <td>
        </td>
        </tr>
    }
    </table>
    <div>
    <input name="submitUsers" type="submit" value="Save" />
    </div>
}

これは私のコントローラ送信方法です

       [HttpPost]
    public ActionResult ConfirmUsers(List<DomainModel.UserApprovalDto> collection)
    {

        if (ModelState.IsValid)
        {
    //TO-DO
        }
        return RedirectToAction("Index");
    }

この最後のものは私の DTO クラスの詳細です:

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DomainModel
{
    public class UserApprovalDto
    {
    public long UserId { get; set; }

    public Guid CarUserId { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string PhotoPath { get; set; }
    public string PhotoSmallPath { get; set; }
    public string PhotoSquarePath { get; set; }
    public string PhotoBigPath { get; set; }

    public bool IsBlocked { get; set; }
    public bool IsDeleted { get; set; }

    }
}

このコードを送信すると、リストは null コレクションをコントローラー メソッドに返します。

コメントしてくれてありがとう。

于 2012-12-08T12:10:28.890 に答える
0

コースにユーザーを追加/削除する画面を作成していると仮定します。それでは、いくつかのビューモデルを作成しましょう

public class CourseVM
{
  public string Name { set;get;}
  public int CourseID { set;get;}
  public List<UserVM> Users { set;get;}
  public CourseVM()
  {
    Users=new List<UserVM>();
  }
}
public class UserVM
{
  public string Name { set;get;}
  public int UserID{ set;get;}
  public bool IsSelected { set;get;}
}

GETアクションで、ViewModel の値を入力し、それをビューに送信します。

public ActionResult Add()
{
    var vm = new CourseVM();

    //The below code is hardcoded for demo. you may replace with DB data.
    vm.Users.Add(new UseVM { Name = "Jon" , UserID=1});
    vm.Users.Add(new UseVM { Name = "Scott", UserID=2 });

    return View(vm);
}

それでは、EditorTemplate を作成しましょう。「 EditorTemplatesViews/YourControllerName 」というフォルダーに移動して作成し、そこにプロパティ名と同じ名前の新しいビューを作成します( )UserVM.cshtml

このコードを新しいエディター テンプレートに追加します。

@モデル ChannelViewModel

<p>
  <b>@Model.Name</b>   :
  @Html.CheckBoxFor(x => x.IsSelected) <br />
  @Html.HiddenFor(x=>x.Id)
</p>

EditorForメイン ビューで、 Html ヘルパー メソッドを使用してエディター テンプレートを呼び出します。

@model CourseVM
@using (Html.BeginForm())
{    
    <div>  
      @Html.EditorFor(m=>m.Users)         
    </div>    
    <input type="submit" value="Submit" />
}

フォームを投稿すると、選択したチェックボックスがプロパティの値をUsers持つコレクションがモデルに含まれます。TrueIsSelected

[HttpPost]
public ActionResult Add(CourseVM model)
{
   if(ModelState.IsValid)
   {
      //Check for model.Users collection and Each items
      //  IsSelected property value.
      //Save and Redirect(PRG pattern)
   }
   return View(model);
}
于 2012-12-09T06:46:43.810 に答える