2

こんにちは私は部分ビュー内にHtmlプレフィックスを取得する必要があります。

部分ビューをレンダリングする場所にこのような接頭辞を付けました

 Html.RenderPartial("Person", Model.Person, new ViewDataDictionary(Html.ViewDataContainer.ViewData)
{
    TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DelegatePerson"}
});

これで、Person PartialViewに入るときに、このような状況でプレフィックスが必要になります。

@Html.TextBoxFor(model => model.CPR, new { @class = "numericTextbox", maxlength = 10, id = "CprField", onkeyup ="CprFieldEdited("[HTMLPrefix]_FieldName");" })

しかし、私はそうする方法がわかりません。そして私は長い間探していました。私は誰かがこれまたは同様のことをする方法を知っていることを望みます。

編集:

これは、Javascript関数CprFieldEditedに、検索する必要のあるhtmlプレフィックスがこの場合は「DelegatePerson」であることを伝えることができるはずであることを意味します。

編集2: 私が何を意味するのかはっきりしないようですので、もう少しコードを提供しようと思います。

メインページ:

 //None relevant Code here
@Scripts.Render("~/bundles/person_search")
//None relevant Code here
        <Body>
    //None relevant Code here
               Html.RenderPartial("Person", Model.Person, new ViewDataDictionary(Html.ViewDataContainer.ViewData)
               {
                   TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DelegatePerson"}
               });
        //None relevant Code here
               Html.RenderPartial("Person", Model.Person, new ViewDataDictionary(Html.ViewDataContainer.ViewData)
               {
                   TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "EmployerPerson"}
               });
        //None relevant Code here
            </body>

このシナリオでは、同じページにレンダリングされる同じタイプの2つのパーシャルがあります。ただし、それらの内部では、Javascriptバンドルに、現在使用されているIDを指定する必要があります。これは、IDを使用できないため、他の目的で使用されているためです。ただし、次のコードが示すように、プレフィックス付きのName属性を使用する方法は次のとおりです。 2つのパーシャルを区別するためにJavaScriptにプレフィックスを付けないでください

 @Html.TextBoxFor(model => model.CPR, new {id = "CprField", onkeyup ="CprFieldEdited("[FieldNameWithPartialPrefix]");" })

問題は、CprFieldEdited( "[FieldNameWithPartialPrefix]");を指定できないことです。「DelegatePerson_Fieldname」または「EmployerPerson」のいずれかである「[FieldNameWithPartialPrefix]」のJavaScript

4

2 に答える 2

2

を使用してプレフィックスを渡す必要はありませんHtmlFieldPrefix。を使用して渡すことができますViewBag(これはと同様に機能しますViewDataが、より推奨されます)。

ただやる、

 @Html.RenderPartial(
     "Person", 
     Model.Person, 
     new ViewDataDictionary()
         {
              { "Custom Prefix", "your_prefix" }
         });

または、部分的にプレフィックスを定義することもできます。

@{
    ViewBag.CustomPrefix = "your_prefix";
}

どちらの方法でもアクセスするには、次のようにします。

<a onkeyup="@ViewBag.CustomPrefix"> ... </a>

ViewBagそのまま何でも渡すことができますdynamic。詳細について

于 2012-12-12T13:40:36.927 に答える
-1
((System.Web.Mvc.ViewDataDictionary)(ViewData)).TemplateInfo.HtmlFieldPrefix
于 2016-06-09T07:29:18.200 に答える