0

私の見解では:

  <% using (Html.BeginForm("SaveRecommendedUserDetails", "Recommend", FormMethod.Post, new { enctype = "multipart/form-data" }))
    { %>
     <% foreach (var group in Model.Results)
        { %>       
          <div id="group-select<%: group.GroupId %>" style="width:auto; height:50px; border:solid 1px black; margin:5px;" >
             <h3>&nbsp; &nbsp; <a href="javascript:OnGroupClicked(<%: group.GroupId %>)" id="changer<%: group.GroupId %>"><%: group.Name %></a></h3> 
          </div>
     <% } %>
    {

JS:

 <script type="text/javascript">   
 function OnGroupClicked(groupId) {
  var groupIds = new Array();
  $("#changer" + groupId).on("click", function (e) {
    e.preventDefault();
    var body = $('#group-select' + groupId),
        green = "rgb(0, 128, 0)",
        white = "rgb(255, 255, 255)";

    if (body.css("backgroundColor") !== green) {
      groupIds.push(groupId);
      body.css("backgroundColor", green);
    } else {
      groupIds.pop(groupId);
      body.css("backgroundColor", white);
    }
  });
}
</script>

私のコントローラー:

   [HttpPost]
    public ActionResult SaveRecommendedUserDetails(RecommendedUserDataModel model)
    {
      var userId = ZincService.GetUserIdByEmail(model.Email);
      model.UserId = userId;
      ZincService.SaveRecommendedUserDetails(model);
      return RedirectToAction("Index");
    }

RecommendedUserDataModel

public class RecommendedUserDataModel
{
  public int UserId { get; set; }
  public string Email { get; set; }
  public string Firstname { get; set; }
  public string Surname { get; set; }
  public string Department { get; set; }
  public string JobTitle { get; set; }

  public IEnumerable<DataModels.Group.GroupDataModel> Groups { get; set; }
 }

私の問題は、groupIdが「選択」されてクリックされた場合、groupIdをコントローラーに戻す必要があることです。どうすればこれを行うことができますか?

4

2 に答える 2

1

カンマ区切りのグループIDを一時的に非表示フィールドに保存することで渡すことができます。そのための手順:

  1. 「hdnGroupIds」のような文字列プロパティをモデルに追加します
  2. フォームの下のビューに非表示のフィールドを配置します。
  3. document.readyおよびOnGroupClickedメソッドのajvascriptからhdnGroupIdsにコンマ区切りのgroupIDを保存します。

上記の手順の後、ポストアクションでコンマ区切りのGroupIdをコントローラーに取り込むことができます。

于 2013-02-15T12:08:15.703 に答える
1

ステップ3:

   <script type="text/javascript">   
  function OnGroupClicked(groupId) {
  var groupIds = new Array();
  $("#changer" + groupId).on("click", function (e) {
      //Here is Step#3
      $('#hdnGroupId').val(groupId+','+$('#hdnGroupId').val());

    });
  }
  </script>
于 2013-02-17T06:10:39.250 に答える