11

私は次のモデルを持っています:

[Required (ErrorMessage="Server Name Required")]
[StringLength(15, ErrorMessage = "Server Name Cannot Exceed 15 Characters")]
public string servername { get; set; }
[Required(ErrorMessage = "Server OS Type Required")]
public string os { get; set; }
public string[] applications;

そして、次のコードを使用して、テキストボックスをサーバー名にバインドしましたが、これは正常に機能します。

@Html.TextBoxFor(m => Model.servername, new {@class="fixed", @id="serverName"})

OS のドロップダウン リストとアプリケーションのリストボックスを使用していますが、どちらも送信時にモデルに正しく入力されません。

 @Html.DropDownListFor(m => m.os , new SelectList( ((List<SelectListItem>)ViewData["osTypes"]),"Value","Text"), new { @class = "fixed" })

 @Html.ListBoxFor(m => m.applications, new MultiSelectList((List<SelectListItem>)ViewData["appList"]), new {style="display:none;"})

ここで私が間違っていることについて何か考えはありますか?

更新:ここで十分な情報を提供したとは思わない

コントローラーで、ViewData["osTypes"] は、WebAPI から取得されたいくつかのデフォルト値を持つリストに設定されます。

List<string> osTypes = FastFWD_SITE.Helpers.GetJsonObj._download_serialized_json_data<List<string>>(getOsTypeUrl);
List<SelectListItem> osTypeList = new List<SelectListItem>();
foreach (string osType in osTypes)
{
    osTypeList.Add(new SelectListItem { Text = osType });
}
ViewData["osTypes"] = osTypeList;

ViewData["appList"] は、次のように空のリストに送信されます。

ViewData["appList"] = new List<SelectListItem>();

アプリケーションのリストについては、ユーザーはテキスト ボックスに入力し、ボタンをクリックしてデータをアプリケーション リストボックスに追加します。

ここに画像の説明を入力

リストボックスにアイテムを追加するJquery:

$("#addItem").click(function () {
        var txt = $("#appName");
        var svc = $(txt).val();  //Its Let you know the textbox's value   
        var lst = $("#serverSpecification_applications");
        var ul = $("#itemList");
        var options = $("#serverSpecification_applications option");
        var iList = $("#itemList li");
        var alreadyExist = false;
        $(options).each(function () {
            if ($(this).val() == svc) {
                alreadyExist = true;
                txt.val("");
                return alreadyExist;
            }
        });
        if (!alreadyExist) {
            $(lst).append('<option value="' + svc + '" selected=true>' + svc + '</option>');
            $(ul).append('<li id="' + svc + '"><label>' + svc + '<input type="checkbox" id="' + svc + '" onclick="removeItem(this.id)"/></label>')
            txt.val("");
            return false;
        }           
    });

私はここでひどく間違ったことをしていると感じています。何でも役に立ちます。

4

1 に答える 1