Как один cshtml вызывает функцию в другом cshtml? - PullRequest
0 голосов
/ 23 марта 2012

В веб-матрице я создал DAL.cshtml в App_Data с множеством общедоступных статических функций.

Я хочу вызвать их с другой страницы .cshtml в другой папке.

В настоящее время я получаю Сообщение об ошибке компилятора: CS0103: имя DAL не существует в текущем контексте

(обратите внимание, что я начинающий после блога о переносе доступа к данным в одно место)

В моем DAL.cshtml пример:

public static void AddProfile (dynamic Profile) 
{
var sql = "INSERT INTO profile (ProfileDescription, ProfileType) " +
            "VALUES (@0, @1)";
            PinwheelDB.Execute(sql, Profile.ProfileDescription, Profile.ProfileType);
            var Profile.ProfileID = PinwheelDB.GetLastInsertId();
}

В моем «призвании» .cshtml у меня есть:

        dynamic Profile = new ExpandoObject();
            Profile.ProfileDescription = Request.Form["txtChildFirstName"];
            Profile.ProfileType = 1;
        functions.DAL.AddProfile(Profile);
        var vProfileID = Profile.ProfileID;

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Как только я переместил DAL.cshtml в папку с именем App_Code вместо App_Data (спасибо, Дарин), он просто заработал.

Обратите внимание, что код, с которым я закончил, выглядит следующим образом (на случай, еслиэто помогает другому новичку) ........

DAL.cshtml теперь в папке с именем App_Code У меня есть:

@functions 
{
public static void AddProfile (dynamic Profile) 
{
var sql = "......"                
PinwheelDB.Execute(sql, .......);
}

Вызывающий .cshtml остается, как я впервые цитировал

Если кто-нибудь знает, почему это, я бы хотел понять.

0 голосов
/ 23 марта 2012

Вы можете поместить часто используемые методы в классы в папке App_Code.Например, у вас может быть ~/App_Code/DAL.cs:

public class DAL
{
    public static void AddProfile(dynamic profile)
    {
        ...
    }
}

и на странице вызова вашего Razor:

@{
    var profile = ...
    DAL.AddProfile(profile);
}
...