Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Параметры метода контроллера в ASP Core

Если параметры передаются через адресную строку, тот тут ничего делать не надо, система сама подставляет параметры в соответствующие аргументы метода.

А если значение слишком велико, чтобы передавать его через адресную строку? Например, я сериализую объект и отправляю post-ом как поле формы, имеющее то же название, что и объектный аргумент метода контроллера. Можно как-то автоматически передать значение этого поля в аргумент? А то аргумент приходит пустым, и приходится писать что-то вроде этого:
        [HttpPost]
        [Route("SaveColumns")]
        public AjaxJsonPostResult<IEnumerable<UwsGridColumns>> SaveColumns(string selector, PQBatchAction<UwsGridColumns> columns) {

            columns = DeSerializeHelper.DeSerialize<PQBatchAction<UwsGridColumns>>(Request.Form["columns"]);

            return new AjaxJsonPostResult<IEnumerable<UwsGridColumns>>(repo.SaveColumns(HttpContext.GetObjName(), selector, columns));
        }
Ответ:
hVostt
Antonariy
Request.Form["batch"] содержит json
Принудительная десериализация работает.
HeaderAccept = text/json
HeaderContentType = application/x-www-form-urlencoded

Что я не так делаю, что еще ему нужно?


Ты уж определись что тебе нужно.
Либо у тебя чистый JSON, тогда [FromBody].
Либо у тебя чистый x-www-form-urlencoded, без JSON, тогда [FromForm], но это итак стандартное поведение.

Не рабоатет биндер, когда у тебя JSON внутри параметра x-www-form-urlencoded.
Ясно.
Но тогда становится не ясно, нахрена эта возможность.

Мне вообще нужна возможность передать несколько объектов, по объекту на аргумент. Объекты "стандартные", могут быть в различных комбинациях, а лепить из них по модели на каждую комбинацию (читай - метод контроллера) не хочется. Это не считая параметров простых типов, которые тоже придется лепить к модели.

Блин, как же проще было со своим собственным мвц.
Вопрос: Как реализуется доступ к контроллерам?

Подскажите пожалуйста новичку, при разборе концепции mvc возник вопрос.
В зависимости от статуса пользователя (авторизован/неавторизован), как реализуется доступ к контроллерам?
Ответ: Для примера, ларка. Есть файл где прописываются роуты, их можно сгруппировать и на группы навешивать фильтры, типа так:
Код:
Route::group(array('before' => 'auth'), function () {
  Route::get('/', function () {
    // К этому маршруту привязан фильтр auth.
  });

  Route::get('user/profile', function () {
    // К этому маршруту также привязан фильтр auth.
  });
});
 

Довольно удобно, вся логика доступа прописана в одном месте, достаточно вынести контроллер из группы, либо добавить в неё.
Вопрос: Передача данных из CKEditor в метод контроллера

В общем код представления:
Код HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>EditC</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="/ckeditor/ckeditor.js"></script>
    <script src="/ckeditor/adapters/jquery.js"></script>
</head>
<body>
    <div>
        @using (Html.BeginForm("EditC", "Main", FormMethod.Post))
        {   
            <textarea class="ckeditor" name="Content" spellcheck="false"></textarea>           
            <button type="submit" name="action" value="remove_article">Show result</button>
        }
    </div>
</body>
</html>
При нажатии на кнопку, переменная типа string с именем Content (значение получается из CKEditor) передается в метод контроллера. В это месте возникает ошибка, т.к. переменная содержит html теги, и это является потенциально небезопасным значением (во всяком случае, так пишет VisualStudio и наотрез отказывается работать).
Вопрос: как передать переменную содержащую html теги из представления в контроллер?
Ответ: Еще ничего не прикручивал, даже менеджер файлов, я над движком сайта сейчас работаю, над фичами позже.
Вопрос: ASP.NET Identity - как реализовать собственную авторизацию методов контроллера

ASP.NET Identity - как реализовать собственную авторизацию методов контроллера?
Что-то уже час гуглю, не могу найти.

Точно помню, что Хвост упоминал в какой-то из тем, что нужно вроде как реализовать какой-то интерфейс и зарегистрировать где-то реализацию, но тоже найти никак не могу.

Пользователь уже прошел аутентификацию, дальше нужно авторизовать его для конкретного экшена с использованием собственной логики. Я могу, конечно, реализовать авторизацию экшена в OnActionExecuting базового контроллера, но зачем, если имеются более подходящие средства.
Ответ: Shocker.Pro,
Думаю, все равно эту задачу стоит решать с помощью фильтров. Так что пример hVostt'а можно взять за основу.
Вопрос: HttpPost метод контроллера

Подскажите, что надо поменять в этом проекте, чтобы по нажатию на кнопочку submit срабатывал httppost метод контроллера ?
Ответ: Попробуй так

C#
1
@Html.EditorFor(n => n.FIO_IO, new { htmlAttributes = new { style = "width: 100%;"}})
Вопрос: Как подсчитывать сумму заказов только выбранного клиента?

подскажите пожалуйста как подсчитывать сумму заказов только выбранного клиента, в таблице отображаются заказы текущего клиента, а сумма высчитывается по всем
пытаюсь использовать поле "id_clint"
  // проходимся в цикле по всем записям таблицы Order
            foreach (DataRow r in tblOrder.Rows)
            {
                //int f = (int)tblOrder.Columns["ID_Client"];//нужно задать что ID текущего  клиента равен ID указанному в заказе 
                //r[f] = tblClient.Columns["ID"];
                sum += (decimal)r["Total"];
                s = sum;
            }

[img=]

К сообщению приложен файл. Размер - 59Kb
Ответ: это диплом? курсач? лабораторная? )
Вопрос: Доступ на страницу только из кода

Добрых времени суток. Допустим есть 2 страницы, View1 и View2. В данный момент на обе эти страницы можно попасть написов в бразуре "mysite/View1" и "mysite/View2". Как сделать что бы зайти на View2 можно было только из кода, при выполнении некоторых условий?
Ответ:
Сообщение от lFreeManl
Так вот, доступ в эту админку должен осуществляться только из контроллера Login
Использовать Identity, и делать такое перед вызовом метода
vb.net
1
<Authorize(Roles:="admin")>
Вопрос: Заголовки методов контроллера службы

Кликните здесь для просмотра всего текста
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 [Authorize]
    public class RegistrationController : ApiController
    {
        [AllowAnonymous]
        public string Get(int id)
        {
            FormsAuthentication.SetAuthCookie("HomeUser", false);
            return "Home";
        }
        [HttpGet]
        public string Post()
        {
            return "Post";
        }
    }
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void Register(HttpConfiguration config)
        {
            // Конфигурация и службы веб-API
 
            // Маршруты веб-API
            config.MapHttpAttributeRoutes();
 
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "{api}/{id}",
                defaults: new { controller="Registration",
                    api=RouteParameter.Optional,
                    id = RouteParameter.Optional }
            );
            config.Filters.Add(new AuthorizeAttribute());
        }

Как изменить мой код, чтобы можно было использовать методы с произвольным именем без указания атрибута типа HttpGet?
Ответ: Используйте , правда, в этом случае, придется для каждого метода задавать свой атрибут

Заголовки кстати необязательно использовать, если запрос типа Get должен обрабатываться одноименным методом или методом, название которого начинается с Get.
Вопрос: Перегрузка методов контроллера

Пытаюсь перегрузить метод, но при вызове выходит ошибка неоднозначности. Есть ли возможность вообще в mvc перегрузить методы?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
         [HttpGet]
        public FileResult Attach(int id)
        {
            
//..
        }
 
 
        [HttpGet]
        public ActionResult Attach(int id, bool delete)
        {
//...
            
        }
Ответ: ИгорьОК, данным методам нужно сопоставить разные маршруты или дать возможность MVC чётко определить какой метод, когда нужно вызывать. Вот есть пример.
Вопрос: Как использовать netflix eureka и feign без spring-boot?

Добрый день. Я пытаюсь перейти на микросервисную архитектуру. У меня есть сервер eureka и сервисы которые взаимодействуют между собой с помощью Feign. Но к сожалению так же есть очень большое web приложения с jsf, spring, hibernate и т.д. которое я не могу переписать на spring-boot, но которое обязательно должно так же взаимодествовать с остальными сервисами. В подключении в него любых библиотек типа spring-cloud или чего-то наподобия я не ограничен. Как я могу использовать в нем eureka и feign? Заранее благодарен.
Ответ:
slippery
Добрый день. Я пытаюсь перейти на микросервисную архитектуру. У меня есть сервер eureka и сервисы которые взаимодействуют между собой с помощью Feign. Но к сожалению так же есть очень большое web приложения с jsf, spring, hibernate и т.д. которое я не могу переписать на spring-boot, но которое обязательно должно так же взаимодествовать с остальными сервисами. В подключении в него любых библиотек типа spring-cloud или чего-то наподобия я не ограничен. Как я могу использовать в нем eureka и feign? Заранее благодарен.


Ч\з HTTPClient?! :-)