Razor Syntax / WebMatrix - C # Вопрос - PullRequest
3 голосов
/ 17 марта 2011

В Windows Forms я могу создать файл класса с именем «Authentication.cs» со следующим кодом:

public class Authentication
{
    public string Name;

    internal bool Authenticate()
    {
        bool i = false;
        if (Name == "Jason")
        {
            i = true;

        }
        return i;
    }
}

В WebMatrix я могу вставить новый файл класса с именем «Authentication.cs»,и вставьте приведенный выше код.

И в моем файле default.cshtml я делаю это:

<body>
   @{
      Authentication auth = new Authentication();
      if(auth.Authenticated("jasonp"))
      {
         <p>@auth.Authenticated("jasonp");</p>
      }
   }
</body>

Но это не сработает!Он работает для настольного приложения WinForms, но не в WebMatrix.Я не знаю, почему это не работает.Сообщение об ошибке:

«Аутентификация пространства имен не существует. Вы уверены, что ссылались на сборки и т. Д.?»

Итак, наверху моего значения по умолчаниюФайл .cshtml Я попробовал это:

@using Authentication.cs;

Что привело к точно такой же ошибке!

Нет документации, в которой я мог бы найти где-либо, которая говорит вам, как "включить" файл класса вваши страницы WebMatrix.

Любая помощь приветствуется,

Спасибо!

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

Вы импортируете пространство имен, а не файл.Так;что такое пространство имен в Authentication?Например:

@ используя My.Utils.Authentication.cs;

Также - вы хотите сбросить ; в вызове бритвы:

<p>@auth.Authenticated("jasonp")</p>

Вытакже можете указать полное имя в коде:

   @{
      var auth = new My.Utils.Authentication();
      if(auth.Authenticated("jasonp"))
      {
         <p>@auth.Authenticated("jasonp")</p>
      }
   }

(кроме того: вы намеренно вызываете один и тот же метод дважды с одинаковыми значениями?)

1 голос
/ 17 марта 2011

Просто перетащите файл cs в каталог App_Code

, затем выполните что-то вроде этого

    @{
      Authentication auth = new Authentication();
      if(auth.Authenticated("jasonp"))
      {
         <p>@auth.Authenticated("jasonp");</p>
      }
   }

Не нужно добавлять использование.

Дополнительно, если вы хотитеиспользуйте .dll, тогда вам нужно будет использовать

@using NameSpace.Authenication

@{
    Authenticated auth = new Authenicated();

 }

 @if(@auth.Authenticated("jasonp"))
 {
    <p>@auth.Authenticated("jasonp")</p>
 }
0 голосов
/ 28 января 2013

Создайте файл с именем linkRef.cs код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


public class linkRef
{
   public  linkRef() {
        //
        // TODO: Add constructor logic here   
    //
   }
}

Поместите его в папку App_code, затем dot net 2012 опубликуйте в bin, затем загрузите папку bin

...