ASP.net MVC 4 或 5 中作为 Link 的复选框

Checkbox as a Link in ASP.net MVC 4 or 5

是否可以在 ASP.net MVC 4 或 5 中使用引用控制器的 AcionResult 的参数将复选框设为 link?

是的,您可以通过制作自定义 html 助手来做到这一点。 在自定义助手中,你可以做任何你想做的事

示例:

       public static MvcHtmlString CheckBoxLabelFor<TModel>(this HtmlHelper<TModel> pHtml, Expression<Func<TModel, bool>> pExpression, IDictionary<string, Object> pLabelHtmlAttributes, string pCaption)
    {
        try
        {
            MvcHtmlString tCheckBox;
            string tCheckBoxWithLabel;
            TagBuilder tBuilder;

            tCheckBox = InputExtensions.CheckBoxFor(pHtml, pExpression);
            tBuilder = new TagBuilder("label");
            tBuilder.MergeAttributes(new RouteValueDictionary(pLabelHtmlAttributes));

            tCheckBoxWithLabel ="<a>" + tBuilder.ToString(TagRenderMode.StartTag) + tCheckBox.ToString() + pCaption + "</label></a>";

            return MvcHtmlString.Create(tCheckBoxWithLabel);
        }
        catch (Exception ex)
        {
            clsINFEventLogger.LogEvent(mdlEnumerations.INFEventTypes.Error, ex.Message, ex.StackTrace);
            return null;
        }

    }

此代码生成带有标签 link 的复选框,现在要使用它并将 link 重定向到操作控制器,您必须像这样在您的视图中使用它:

 @Html.CheckBoxLabelFor(model => model.Test,new Dictionary<string, object> {  { "onclick", "location.href= '" + @Url.Action(YourController, YourAction, Model) + "'" } }, "Test Caption")

您的 html 生成将如下所示:

<a><label onclick="location.href= '/Namespace/YourController/YourAction'"><input id="Test" name="Test" type="checkbox" value="true">Test</label></a>

您可以根据需要编辑自定义助手:)