2012-03-14 6 views
0

私は今このtutorialを使用しています。Asp.Net MVCは厳密に型指定されたコレクションです。 EditorFor生成されたプレフィックスを追加しない

(私は私の問題が強く、私はインターネット上で見ていたもので...コレクションを入力するために、私は間違っている可能性が関係していると考えている)

私と一緒にご負担願います。 :)

私は別のquestionで尋ねたこの問題を抱えていましたが、その答えはうまくいっていましたが、コードを少し修正した後で私の習慣が私のカスタム部分的な表示では、たとえば、TextBoxFor htmlヘルパーを使用するフィールドのようにプレフィックスを追加しないでください。例えば。新しいアイテムの追加をクリックすると追加されますが、以前に追加されたアイテムと同じIDで、同じIDを持つ2つのアイテムがあるため、Javascriptが失敗します。

問題を試してみて、明確にするいくつかのコード

部分図

@model Portal.ViewModels.Micros 
@using Portal.Helpers 
<div class="editorRow" style="padding-left:5px"> 
    @using (Html.BeginCollectionItem("micros")) 
    { 
     @Html.EditorFor(model => model.Lab_T_ID) 
     @Html.EditorFor(model => model.Lab_SD_ID)   
     @Html.TextBoxFor(model => model.Result) 
     <input type="button" class="deleteRow" title="Delete" value="Delete" /> 
    } 
</div> 

TextBoxFor(結果は)

としてレンダリングさについて

<input id="micros_5e14bae5-df1b-4c42-9e96-573a8e52f8b2__Result" name="micros[5e14bae5-df1b-4c42-9e96-573a8e52f8b2].Result" type="text" value=""> 

エディタとしてレンダリングされます

必要に応じて、私が使ったヘルパークラス(BeginCollectionItem)もあります。これはチュートリアルのデモプロジェクトにもあります。

私は基本的に「マイクロ[5e14bae5-df1b-4c42-9e96-573a8e52f8b2]」を見つける必要があります。入力ボックスに私が見る限りでは追加されていますが、これまでには困っています:/

答えて

2

TextBoxForヘルパーはテンプレートのナビゲーションコンテキストを考慮しているため、あなたのエディタテンプレートは単に名前を持たない<select>要素を単にハードコーディングしただけです。入力フィールドを生成するときに、私はHTMLヘルパーを使用して、あなたをお勧めします:

をそうでカスタムテンプレートで、あなたのハードコードの選択を置き換える:

@model int? 
@{ 
    var values = ViewData.ModelMetadata.AdditionalValues; 
} 

<span>  
    @Html.DropDownList(
     "", 
     Enumerable.Empty<SelectListItem>(), 
     new { 
      multiple = "multiple", 
      style = "width:" + values["comboboxWidth"] + "px", 
      data_url = Url.Action((string)values["action"], (string)values["controller"]), 
      data_noneselectedtext = values["noneSelectedText"], 
      data_value = values["id"], 
      data_text = values["description"] 
     } 
    ) 
</span> 
+0

ありがとう..しかし、これはばかげなっている、私がしてきたように感じています一日中学校に通っています...私はあなたにビールなどを買うことができますか? –

関連する問題