3

HtmlHelper オブジェクトを独自のヘルパー メソッドに渡そうとしているので、独自のヘルパー内で Html.TextBox を呼び出すことができます。TextBox メソッドは、属性を動的に追加するための非常に簡単な方法である htmlAttributes オブジェクトを受け入れるため、これを行いたいと考えています。これは、私の特定のケースでは重要です。(クリックしてその中のテキストを編集できるリンクを作成しようとしています。関連するJavaScriptコールバック関数があり、このコールバックの引数は正確に保存されるものによって異なります-したがって、htmlAttributesが必要ですオブジェクトです。) 問題は、Html オブジェクトをヘルパーに渡すことができないように見えることです。私のヘルパーのコードは次のとおりです。

@helper EditLabel(System.Web.WebPages.Html.HtmlHelper html, string id, string text, string defaultText, string linkStyle, object saveFunctionAndArgs)
{    
    string linkText = (string.IsNullOrEmpty(text)) ? defaultText : text;
    <div id="Link_@id">
        <a href="javascript:EditLabel('Link_@id', 'Edit_@id');" style="@linkStyle">@linkText</a>
    </div>    
    <div style="display:none" id="Edit_@id" data-link-id="Link_@id">        
        @html.TextBox("EditLabel", text, saveFunctionAndArgs)        
    </div>
}

これはコンパイルされ、すべてがうまくいきます..cshtmlファイルのApp_Codeフォルダーにあります。ただし、ビューの 1 つからこれを呼び出そうとすると、ビューによって提供される Html オブジェクトは、ヘルパーで期待される型と同じではありません。呼び出しは次のようになります。

<span>
    @Helpers.EditLabel(Html, id, text, "comment", style, new { saveFunction = "SaveDayuLabel", clinicID = Model["ClinicID"], locationID = Model["LocationID"], date = Model["Date"] })
</span>

失敗するのは、@Helpers.EditLabel( の後の "Html" の使用です。コンパイラは、「無効な引数」があると言っています。この問題が何であるかについて多くの検索/読み取りを行いましたが、読むほど、もっと混乱します.どんな提案も大歓迎です.

4

1 に答える 1