0

私はこのトピックに関する先週の投稿を読んでいて、近づいてきましたが、まだ十分ではありません. どんな支援も役に立ちます。多数の Hyper-V サーバーがあり、それに割り当てられたゲスト VM を最新の状態に保とうとしています。割り当てられたゲスト マシンの 2 つのリスト 1 つのリストがあります。利用可能なゲスト マシンの 2 番目のリスト

私は次のものを持っています:

ビューモデル:

namespace MyFirstApplication.ViewModels
{
    public class HVHostGuestViewModel
    {
        public string HVCname { get; set; }
        public int AvailMemory { get; set; }
        public int AvailDisk { get; set; }
        public SelectList HVGuests {get; set; }
        public SelectList AvailGuests { get; set; }
        public List<string> GuestsRemoved { get; set; }
        public List<string> GuestsAdded { get; set; }
        public string HVComments { get; set; }
    }
}

コントローラ:

public ActionResult Manage(int id)
    {
        tblHVHost tblhvhost = db.tblHVHosts.Find(id);
        var AssignedComputers = (from c in db.tblComputers
                                  where (c.tblHVHostHVHostId == id  && c.HostName !    = "DTR")
                                  orderby(c.HostName)
                                  select c).ToList();

        var UnAssignedComputers = (from c in db.tblComputers
                                   where c.tblHVHostHVHostId == 1 && c.HostName != "DTR"
                                   orderby(c.HostName)
                                   select c).ToList();

     var GuestVM = new SelectList(AssignedComputers,"tblHVHostHVHostId","HostName");
     var AvailVM = new SelectList(UnAssignedComputers, "tblHVHostHVHostId","HostName");



        var HVViewModel = new HVHostGuestViewModel
        {
           HVCname = tblhvhost.HVCName,
           AvailDisk = 1000,
           AvailMemory = 32,
           HVComments = tblhvhost.HVComments,
          HVGuests = GuestVM,
          AvailGuests = AvailVM                
        };

        return View(HVViewModel);

    }
    //
    // POST:/HVHost/Manage/
    [HttpPost]
    public ActionResult Manage(HVHostGuestViewModel HVViewModel)
    {


        return View();
    }

表示: (Razor エンジンを使用)

VM を Hyper-V サーバーに割り当てる

@using (Html.BeginForm("Manage", "HVHost", FormMethod.Post)){

<table>

    <tr>          
        <th> Assigned Machines </th>
        <th></th>
        <th> Available Machines</th>
   </tr>
    <tr>
        <td>
            @Html.ListBox("Guests", Model.HVGuests)
        </td>

        <td>
              <input id="MoveRight" type="button" value=" >> " />
            <br />
              <input id="MoveLeft" type="button" value=" << " />
        </td>

        <td>
             @Html.ListBox("Available", Model.AvailGuests) 

        </td>
    </tr>
    <tr>
        <td></td>
         <td> <input type="submit" value="Submit" onclick =" " /> </td>
         <td></td>

    </tr>
</table>

@Html.HiddenFor(model => model.GuestsRemoved)
@Html.HiddenFor(model => model.GuestsAdded)

}

Jquery スクリプト:

$(function () {
    $("#MoveRight,#MoveLeft").click(function (event) {
        var id = $(event.target).attr("id");
        var selectFrom = id == "MoveRight" ? "#Guests" : "#Available";
        var moveTo = id == "MoveRight" ? "#Available" : "#Guests";

        var selectedItems = $(selectFrom + " :selected").toArray();
        $(moveTo).append(selectedItems);
        selectedItems.remove;
        var name = $(event.target).attr("Text");

        $("#GuestsRemoved").val("MPE999")
        $("#GuestsAdded").val("mpe111")

    })
});

何が機能しているか: 2 つのリストを取得し、2 つのリスト間でアイテムを移動できます (左から右/右から左)。これは、私が見つけたjQueryスクリプトを使用しています。

これまでに読んだこととは異なり、2 つのオプションがあります。各イベントの後にサーバーに 1 回ポストバックします。2)クライアント側にとどまり、ポストバック時にコントローラーが使用できる非表示フィールドに選択されたアイテムのリストを保持します。オプション 2 を試すことにしました。ビュー モデルに次の 2 つの要素を追加しました。GuestsRemoved、GuestsAdded をリストとして追加しました。Razor ヘルパー構文を使用して、これらの要素をビューに追加しました。 (モデル => model.GuestsAdded)。次に、それを Jquery スクリプトに追加しました。$("#GuestsAdded").val("mpe111") というテスト値をコントローラーに割り当てることで、値がコントローラーに返されることを確認しました。

だからここで私は立ち往生しています。私が返そうとしているものである「HostName」を与える適切なプロパティを理解することができませんでした。このインスタンスのホスト名のリスト。

生の HTML は次のようになります: < select id="Guests" multiple="multiple" name="Guests"> MPE123

selectlist オブジェクトは次のとおりです。
var GuestVM = new SelectList(AssignedComputers,"tblHVHostHVHostId","HostName")

「ホスト名」へのアクセス方法がわかりません。どんな援助でも大歓迎です。

4

1 に答える 1

0

これを試して:

var listOfHostNHames = $(selectFrom + " :selected").text();

于 2013-04-03T20:25:59.203 に答える