1

Choice List Fieldオーチャードギャラリーから使用しています。ここまでは順調ですね..

次に、コードにいくつかの変更を加えました Modules.Contrib.ChoiceList.views.EditorTemplate.Flieds.Contrib.ChoiceList.cshtml。目的は、ラジオ ボタンの周りにテーブルを配置することでした。問題なく機能しています。

次のコードを使用します。

    @model Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel
    @using Orchard.Utility.Extensions;
    @{ var i = 0; }


    <fieldset class="FieldSoubedenos">
    <legend>@Model.Name</legend>
    <table class="data-table-Soubedenos">
        <tbody>
        <tr >    
            @if( Model.ListMode == "radio" )
            {
                foreach (var option in Model.Options.Split(';'))
                {

                    if( string.IsNullOrWhiteSpace(option) )
                    {

                        <td>
                            <label>@Html.RadioButton("SelectedValue", "",     string.IsNullOrWhiteSpace(Model.SelectedValue))<i>unset</i></label>
                        </td>

                    }
                    else
                    {
                        <td>
                            <label>@Html.RadioButton("SelectedValue", option, (option == Model.SelectedValue))@option</label>
                        </td>
                    }  

                    ++i;
                        if (i % 2 == 0)
                        {  

                         @:</tr><tr>                                            
                        }               
                }         
            }


    else
    {
        @Html.DropDownListFor(m=>m.SelectedValue, new SelectList(Model.Options.Split(';'), Model.SelectedValue))
        @Html.ValidationMessageFor(m=>m.SelectedValue)
    }     
        <tr >
        <tbody>      
    </table>
</fieldset>

次の段階は代替 URL を使用することで、私はそれを作成しました - ~/Themes/XXXXXXXXX/Views/EditorTemplate-Dform-url-homepage.cshtml

上記のコードを代替ファイルにコピーします。

ブラウザを更新すると、次のエラーが表示されました。


Server Error in '/' Application.
        The model item passed into the dictionary is of type
         'IShapeProxy82be9d7cba51459e888e92b32898011b', but this dictionary requires a model item  of type 'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel'.
Description: An unhandled exception occurred during the execution of the current web  request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: The model item passed into the dictionary is of type 'IShapeProxy82be9d7cba51459e888e92b32898011b', but this dictionary requires a model item of type 'Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel'.

Source Error:


 Line 3:          @if (Model.Content != null) {
Line 4:              <div class="edit-item-content">
Line 5:                  @Display(Model.Content)
Line 6:              </div>
Line 7:          }


Source File: c:\00\01 projectos\xxxx\yyyyyyyy\NewWebSite.Orchard.Web\0\Orchard.Web.1.6\Orchard 0\Core\Contents\Views\Content.Edit.cshtml    Line: 5

助言がありますか ?

4

1 に答える 1

0

ビューの上部にある @model 宣言を削除してみてください。これは、期待している ViewModel ではなく、Model に割り当てられた動的形状テンプレートであるためです。http://orchard.codeplex.com/workitem/18195 を参照してください

Model.Model を介してビュー モデルにアクセスできます。

@{
    var myViewModel = 
        (Contrib.ChoiceList.ViewModels.ChoiceListFieldViewModel)Model.Model;
}

または動的フィールドに直接アクセスします

@Model.Model.Name
于 2013-01-17T04:07:34.130 に答える