2

ドロップダウンから値を変更する JavaScript があり、フォームを保存すると、サーバー側で値を取得できません。

以下のコードに従ってください。

  <div class="editor-field">
    @Html.DropDownListFor(model => model.CategoriaId,
        Model.Categorias
            .Where(c => c.Id != Model.ContentId)
            .Select(c => new SelectListItem {
                Selected = c.Id == Model.CategoriaId,
                Text = c.Type + " - " +c.Name,
                Value = c.Id.ToString()
            } ),
            "Selecione uma Categoria")

         @Html.Hidden("hdnValue", Model.hndCategoriaId) // my hidden value
  </div>

ドロップダウンと非表示の値を変更する Javascript

function change(item) {

var valueArtigo;
var ddl = document.getElementById('Categoria_CategoriaId');         
for (i = 0; i < ddl.options.length; i++) {
   if (ddl.options[i].text.toUpperCase().indexOf("ARTIGOS") != -1)
   valueArtigo = ddl.options[i].value;
}
document.getElementById("Categoria_CategoriaId").value = valueArtigo;
document.getElementById("Categoria_hdnValue").value = valueArtigo;
}

サーバー側に戻って、データベースに値を保存しようとしています。

public void UpdateCategoriaForContentItem(ContentItem item, EditCategoriaViewModel model)
{
    if ((model.CategoriaId != null)||(model.hndCategoriaId != null)) // both are null
    {...}
}

ありがとう、

4

2 に答える 2

5

非表示の値をモデルにバインドする必要があります

@Html.HiddenFor(m=>m.hdnCategoriaId)
or
@Html.Hidden("hdnCategoriaId",Model.hdnCategoriaId,Model)

ドロップダウン変更イベントの非表示フィールドの値を設定するには、次のようにするだけです。

$('#hdnCategoriaId').val(valueArtigo)
于 2012-08-28T05:09:09.487 に答える
0

ほとんどの場合、問題は JavaScript ではなくバインディングにあります。目的をテストするために JavaScript を使用せずに選択して送信し、サーバーへのリクエストで何が投稿されるか、アクション パラメーターにどのようにマップされるかを確認してください。

于 2012-08-28T05:37:51.917 に答える