Расширение MVC AjaxHelper - система не может его найти? - PullRequest
1 голос
/ 10 сентября 2011

Я пытаюсь создать расширение AjaxHelper и, похоже, работаю в SNAFU.

Вид:

<%= Ajax.DeleteLink("Delete", "LicenseDelete", "Directory", new { LicenseID = license.ID }, new { @class = "directory button" }); %>

Расширение:

using System;
using System.Collections.Generic;
using System.Web.Mvc;
using System.Linq.Expressions;
using System.Web.Routing;
using System.Web.Mvc.Ajax;

namespace RainWorx.FrameWorx.MVC
{
    public static class HtmlExtensions
    {
        public static MvcHtmlString DeleteLink<TModel>(this AjaxHelper<TModel> ajaxHelper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes)
        {
            return ajaxHelper.ActionLink(linkText
                                       , actionName
                                       , controllerName
                                       , routeValues
                                       , new AjaxOptions { Confirm = "Are you sure you want to delete this item?",
                                                           HttpMethod = "DELETE",
                                                           OnSuccess = "function() { window.location.reload(); }" }
                                       , htmlAttributes);
        }
    }
}

Результат просмотра:

Ошибка сервера в приложении '/'.
Ошибка компиляции
Описание: во время компиляции ресурса произошла ошибка требуется для обслуживания этого запроса. Пожалуйста, просмотрите следующие конкретные подробности об ошибках и измените ваш исходный код соответствующим образом.

Сообщение об ошибке компилятора: CS1061: 'System.Web.Mvc.AjaxHelper ' не содержит определения для DeleteLink и метода расширения «DeleteLink» принимает первый аргумент типа 'System.Web.Mvc.AjaxHelper ' может быть найдено (вы пропустили директиву использования или сборку ссылка?)

Что (очевидное) что я пропустил? Я могу поклясться, что первый аргумент в моем методе расширения действительно принимает практически любую модель, которую я выброшу.

ТИА

-kb

Ответы [ 2 ]

3 голосов
/ 10 сентября 2011

Скорее всего, вам нужно либо зарегистрировать пространство имен в web.config или в самом представлении.

Просмотреть пример с помощью WebForms:

<%@ Import Namespace="RainWorx.FrameWorx.MVC" %>

http://msdn.microsoft.com/en-us/library/eb44kack.aspx

Посмотреть пример с помощью Razor View Engine с C #:

@using RainWorx.FrameWorx.MVC

Посмотреть пример с помощью Razor View Engine с VB.NET:

@Imports RainWorx.FrameWorx.MVC

Как импортировать пространство имен вСтраница просмотра бритвы?

Пример Web.Config:

<system.web>
    <compilation>
        <add assembly="RainWorx.FrameWorx.MVC" />
    </compilation>
</system.web>

http://msdn.microsoft.com/en-us/library/bfyb45k1.aspx

2 голосов
/ 10 сентября 2011

Включите ваше расширение пространства имен в вашем представлении.Это почти всегда причина.

...