Вопросы по тегу: asp.net-mvc

(24)

Не удалось найти файл метаданных VS 2017 .dll

Я знаю, что есть еще один вопрос с точно такой же проблемой, но я просмотрел все эти ответы, и ни один мне не помог. :( (Это был вопрос.)Я только что создал новый проект ASP.NET MVC и присоединил к решению несколько .dll. Теперь, когда я пытаюсь собрать проект, я получаю сообщение об ошибке, показанное ниже, для 3 из 5 библиотек.Error CS0006 Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found Logic C:\Users\...\source\Logic\CSC 1 Active Error CS0006 Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found PTS2-MVC C:\Users\...\source\PTS2-MVC\CSC 1 Active Error CS0006 Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found PTS2-MVC.Tests C:\Users\...\source\PTS2-MVC.Tests\CSC 1 Active Когда я захожу в папку bin\debug этой .dll, я вижу, что она пуста, а другая .dll, где я не получаю сообщения об ошибке, не пуста. Но я понятия не имею, как это исправить или что я сделал, чтобы это произошло.Наиболее распространенный ответ: перейти к свойствам решения решения и перейти к конфигурации и снять галочку -> *100010 *apply -> check и снова apply, но это не сработало
S

Svenmarim

5 лет назад

Ответов: 29

Why can't I call the UseInMemoryDatabase method on DbContextOptionsBuilder?

First off, I can't use SQL Lite. Secondly the code below is giving me: Error CS1061 'DbContextOptionsBuilder' does not contain a definition for 'UseInMemoryDatabase' and no extension method 'UseInMemoryDatabase' accepting a first argument of type 'DbContextOptionsBuilder' could be found (are you missing a using directive or an assembly reference?) The code: var options = new DbContextOptionsBuilder() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; var context = new ProductContext(options); Context using Memory.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; namespace Memory.Data { public class ProductContext : DbContext { public ProductContext(DbContextOptions options) : base(options) { } public DbSet Categories { get; set; } public DbSet Products { get; set; } } } My project CSPROJ file The exact problem is that the method is just not available. I don't seem to understand why. I require enlightenment on this issue.
Y

Yusuf Cum

4 года назад

Ответов: 5

Using 'UseMvc' to configure MVC is not supported while using Endpoint Routing

I had an Asp.Net core 2.2 project. Recently, I changed the version from .net core 2.2 to .net core 3.0 Preview 8. After this change I see this warning message: using 'UseMvc' to configure MVC is not supported while using Endpoint Routing. To continue using 'UseMvc', please set 'MvcOptions.EnableEndpointRouting = false' inside 'ConfigureServices'. I understand that by setting EnableEndpointRouting to false I can solve the issue, but I need to know what is the proper way to solve it and why Endpoint Routing does not need UseMvc() function.
N

Nick Mehrdad Babaki

2 года назад

Ответов: 11

Vue.js получает выбранную опцию на @change

Во-первых, я хочу сказать, что я новичок в Vue, и это мой первый проект, когда-либо использующий Vue.У меня есть поле со списком, и я хочу сделать что-то другое в зависимости от выбранного поля со списком. Я использую отдельный файл vue.html и TypeScript. Вот мой код: Ежегодный отпуск / выходной Отпуск по требованию Вот мой файл TypeScript: onChange (значение) { console.log (значение); } Как мне получить значение выбранного параметра в моей функции TypeScript? Спасибо.
h

hphp

4 года назад

Ответов: 6

Visual Studio 2017 - Серверный процесс Node.JS - Выключить?

Я работаю над приложением ASP.NET в Visual Studio 2017 и замечаю Node.JS: серверный процесс Javascript, работающий с объемом памяти от 1,3 до 1,8 ГБ. Мой рабочий процесс IIS имеет нормальный размер, как в VS 2015.В моем приложении нет библиотек Node.JS. Я не могу понять, как отключить этот процесс Node.JS: серверный Javascript. Он съедает слишком много памяти для чего-то, что мне не нужно.Есть ли способ убить это, кроме удаления VS 2017 и переключения обратно на VS 2015?Убийство основного процесса в диспетчере задач не влияет ни на что в VS, однако, если я перейду на вкладку «Подробности» и убью отдельные запущенные процессы, это приведет к сбою Visual Studio. Я снял видео о том, что произошло после того, как я убил процесс и запустил свою локальную веб-страницу (извините за качество, ТАК ограниченный размер изображения до 2 МБ):
R

Ryan Ternier

5 лет назад

Ответов: 9

Установка базового пути с помощью ConfigurationBuilder

Я пытаюсь установить базовый путь приложения для создаваемого мной веб-приложения .Net. Я все время получаю ошибки в построителе конфигураций. Это ошибка, которую я получаю.DNX, ошибка версии = v4.5.1 CS1061: ConfigurationBuilder не содержит определения для SetBasePath и не может быть найден метод расширения SetBasePath, принимающий первый аргумент типа ConfigurationBuilder (вы отсутствует директива using или ссылка на сборку?)Я предполагаю, что получу ту же ошибку для моих .AddJsonFile () и .AddEnvironmentVariables (). Я сделал что-то не так? Разве я не добавил правильную зависимость в свой project.json? Я приложил свои startup.cs и project.json.project.json{ "version": "1.0.0-*", "compilationOptions": { "emitEntryPoint": true }, "tooling": { "defaultNamespace": "TripPlanner" }, "dependencies": { "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", "Microsoft.Framework.Configuration": "1.0.0-beta8", "Microsoft.Framework.DependencyInjection": "1.0.0-beta8" //"Microsoft.Extensions.PlatformAbstractions": "1.0.0-beta8" }, "commands": { "web": "Microsoft.AspNet.Server.Kestrel" }, "frameworks": { "dnx451": { }, "dnxcore50": { } }, "exclude": [ "wwwroot", "node_modules" ], "publishExclude": [ "**.user", "**.vspscc" ] } startup.csusing System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; using Microsoft.AspNet.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.PlatformAbstractions; using Microsoft.Framework.Configuration; using Microsoft.Framework.DependencyInjection; using TripPlanner.Services; namespace TripPlanner { public class Startup { public static IConfigurationRoot Configuration; public Startup(IApplicationEnvironment appEnv){ var builder = new ConfigurationBuilder() .SetBasePath(appEnv.ApplicationBasePath) .AddJsonFile("config.json") .AddEnvironmentVariables(); Configuration = builder.Build(); } // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection services) { services.AddMvc(); #if DEBUG services.AddScoped (); #else services.AddScoped (); #endif } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) { //app.UseDefaultFiles(); app.UseStaticFiles(); app.UseMvc(config => { config.MapRoute( name: "Default", template: "{controller}/{action}/{id?}", defaults: new { controller = "App", action = "Index"} ); }); } // Entry point for the application. public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run(args); } } Ошибка находится в функции public startup прямо в верхней части startup.cs.
B

BartimaeusStern

6 лет назад

Ответов: 10

Как использовать npm с ASP.NET Core

Я использую npm для управления jQuery, Bootstrap, Font Awesome и аналогичными клиентскими библиотеками, которые мне нужны для моего приложения ASP.NET Core.Подход, который сработал для меня, начался с добавления в проект файла package.json, который выглядит так:{ "version": "1.0.0", "name": "myapp", "private": true, "devDependencies": { }, "dependencies": { "bootstrap": "^3.3.6", "font-awesome": "^4.6.1", "jquery": "^2.2.3" } } npm restores these packages into the node_modules folder which is on the same level as wwwroot in the project directory:Поскольку ASP.NET Core обслуживает статические файлы из папки wwwroot, а node_modules там нет, мне пришлось внести пару изменений, чтобы заставить эту работу работать, первое: добавление app.UseFileServer прямо перед app. UseStaticFiles в моем файле Startup.cs:app.UseFileServer(new FileServerOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"node_modules")), RequestPath = new PathString("/node_modules"), EnableDirectoryBrowsing = true }); app.UseStaticFiles(); и второй, включая node_modules в моих publishOptions в файле project.json:"publishOptions": { "include": [ "web.config", "wwwroot", "Views", "node_modules" ] }, Это работает в моей среде разработки, и это также работает, когда я развертываю его в своем экземпляре службы приложений Azure, статические файлы jquery, bootstrap и font-awesome обрабатываются хорошо, но я не уверен в этой реализации. *Как правильно это сделать?Это решение появилось после сбора большого количества информации из нескольких источников и проверки некоторых из них, которые не работали, и кажется немного странным обслуживать эти файлы извне. wwwroot.Мы будем благодарны за любые советы.
C

Carlos Figueroa

6 лет назад

Ответов: 10

Вы должны добавить ссылку на сборку netstandard, Version = 2.0.0.0

Проект представляет собой веб-приложение ASP.NET MVC, ориентированное на .NET Framework 4.6.1.Внезапно (некоторые пакеты NuGet были обновлены) во время выполнения я начал получать следующую ошибку: CS0012: Тип 'System.Object' определен в сборке, которая не упоминается. Вы должны добавить ссылку на сборку netstandard, Версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51 '. В моем основном представлении Index.cshtml, в строке, где я использую @Html.ActionLinkНа моем компьютере установлены .NET Core SDK 2.0 и .NET Framework 4.7.1, но я не хочу указывать на них ссылку. Это только веб-приложение .NET Framework, оно размещено в Windows IIS, где установлен фреймворк 4.6.1, на сервере не установлен NET Core.Так почему он просит добавить ссылку на netstandard? Как я могу исправить это, не ссылаясь на netstandard, но на полную версию Windows .NET Framework 4.6.1?Я проверил предыдущий коммит, который работал нормально, но все еще получаю эту ошибку. Так что это не связано с обновлением пакетов NuGet. Кажется, что-то есть на моей локальной машине разработчика.Если опубликовать приложение в каталоге и запустить его с помощью IIS, оно работает.Ссылка на .csproj gistpackages.config При публикации приложения с использованием VS2017 в файловой системе я получаю следующее предупреждение на выходе: The following assembly has dependencies on a version of the .NET Framework that is higher than the target and might not load correctly during runtime causing a failure: netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51. The dependencies are: System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. You should either ensure that the dependent assembly is correct for the target framework, or ensure that the target framework you are addressing is that of the dependent assembly. Но я ничего не могу найти на System.Transactions. Как я могу найти то, что на него ссылается?
e

empz

4 года назад

Ответов: 21

The default XML namespace of the project must be the MSBuild XML namespace

Я клонировал репозиторий SignalR ASP.NET Core локально и попытался открыть решение из следующей среды.IDEMicrosoft Visual Studio Enterprise 2015 Version 14.0.25431.01 Update 3 Microsoft .NET Framework Version 4.6.01055 DOT NET CLIλ dotnet --info .NET Command Line Tools (1.0.0-preview2-1-003177) Product Information: Version: 1.0.0-preview2-1-003177 Commit SHA-1 hash: a2df9c2576 Runtime Environment: OS Name: Windows OS Version: 6.1.7601 OS Platform: Windows RID: win7-x64 I end up seeing a lot of these kinds of error messages: ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj : error : The default XML namespace of the project must be the MSBuild XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the element. If the project has been authored in the old 1.0 or 1.2 format, please convert it to MSBuild 2003 format. ..\Repos\SignalR\src\Microsoft.AspNetCore.SignalR\Microsoft.AspNetCore.SignalR.csproj I want to know how to fix this the correct way.
D

David Pine

5 лет назад

Ответов: 6

Как сделать так, чтобы вспомогательный метод HTML запускал частичное представление каждого времени

У меня есть представление (для создания рецепта), к которому я динамически добавляю частичное представление (представляющее продукты). В рецепт может быть добавлено несколько продуктов. Частичное представление добавляется при нажатии кнопки с использованием jQuery, и это отлично работает: $('.loadPartial').on('click', function (evt) { evt.preventDefault(); evt.stopPropagation(); var $productsDiv = $('#productsDiv'), url = $(this).data('url'); $.get(url, function (data) { $productsDiv.append(data); }); }); Частичный просмотр имеет комбо. Имя этой комбинации генерируется динамически с использованием вспомогательного метода расширения HTML GetIndexedName, который добавляет уникальный индекс к указанному имени. Если я дважды нажимаю кнопку, должно отображаться два частичных представления, после первого щелчка имя комбо должно быть «ProductsCombo0», после второго «ProductsCombo1»@Html.DropDownList( @Html.GetIndexedName("ProductsCombo"), null, htmlAttributes: new { @class = "form-control col-md-3" } ) Проблема в том, что метод @ Html.GetIndexedName срабатывает только после первого нажатия кнопки (проверено в отладчике). Следующие щелчки отображают только частичное представление, но использовать метод для генерации имени. Все комбинации имеют названия "ProductsCombo0", "ProductsCombo0".Вы знаете, как заставить его срабатывать каждый раз при рендеринге частичного представления?Если это невозможно сделать таким образом, не могли бы вы порекомендовать мне другое решение для генерации уникальных идентификаторов?
M

MatGar

6 лет назад

Ответов: 2

Как сделать POST-запрос через Redirect в mvc?

Из контроллера, есть ли способ отправить запрос POST в конкретный домен с параметром?То, что я хочу заархивировать, выглядит так:public ActionResult Index() { Redirect("https://www.anothersite.com", new { s = "abc" }); } Я хочу сделать это на стороне сервера вместо использования ajax на стороне клиента:$.ajax({ url: 'https://www.anothersite.com', type: 'POST', data: { s: 'abc' } }).done(function (data) { // logic... }) Возможно ли?
T

Tân

6 лет назад

Ответов: 1

.Net MVC4 перенаправление к действию не работает должным образом

Вероятно, это глупый вопрос, но похоже, что RedirectToAction () работает некорректно.• 100001 вместо этого admin, и я понятия не имею, почему, когда я вызываю метод, давая ему имя контроллера и имя метода действия внутри этого контроллера. вместо этого мне нужно: http://localhost: 63374 / Админ / ДомЯ что-то делаю не так? [Route("logout")] public async Task Logout() { var authManager = HttpContext.GetOwinContext().Authentication; authManager.SignOut(); return RedirectToAction("index", "home"); }
P

Pectus Excavatum

6 лет назад

Ответов: 2

Aplying style to a list item dynamically in view

У меня есть список, и я хочу применить к каждому элементу свой стиль в зависимости от его идентификатора. Ниже представлена ​​моя попытка сделать это, но, к сожалению, что-то не так. Любая помощь будет очень признательна.@foreach (var item in Model) { @if (@item.Id==0) { var css = "background-color:Aqua"; } else if (@item.Id==1) { var css = "background-color:Red"; } else { var css = "background-color:Green"; } @item.Info @item.Name }
s

stkvhw

6 лет назад

Ответов: 2

Testing for HTTPS in the end of development

В настоящее время я запускаю веб-проект, и я думал разработать все, а затем, в конце, протестировать в HTTPS. Я плохо разбираюсь в том, как работает HTTPS, поэтому хотел спросить, можно ли это сделать. Или начать разработку с использованием HTTPS с самого начала.
g

g_b

6 лет назад

Ответов: 1

Получение суммы путем зацикливания списка внутри списка с #

public class GRNMaster { public string ID { get; set; } public string GRNNo { get; set; } public List GRNDetails { get; set; } } public class GRNDetails { public string GRNID { get; set; } public string ItemID { get; set; } public string ItemType { get; set; } public int RecevedQty { get; set; } } вышеуказанные классы содержат некоторые свойства класса заголовка GRN и класса деталей. i Grn может состоять из многих элементов, поэтому «List GRNDetails» должен их хранить.Я беру список GRN из метода, который будет хранить в переменной GrnListpublic List GrnList У меня есть список идентификаторов предметовpublic List ItemIDList В контроллере я хочу зациклить ItemIDList (List ItemIDList) и получить сумму для этого конкретного элемента на основе спискаint ItemQty = 0; foreach (var item in ItemIDList) { ItemQty = 0; var ItemQty = //some code using GrnList // rest of the programming code based on the // item qty }
S

Sameera

6 лет назад

Ответов: 2

Выделение не сохраняется в привязке AngularJS MultiSelect

Я пытаюсь отобразить выбранные значения из множественного выбора как отдельные объекты в моем представлении, то есть выбранные значения появятся где-то еще в форме; фактический множественный выбор будет скрыт, необходимо только опубликовать выбранные значения, чтобы их можно было привязать к серверной стороне модели просмотра (ASP.NET MVC).Кажется, это работает. Тем не менее, AngularJS будет использовать префикс ID с помощью 'string:', поэтому я должен использовать track как. Если я это сделаю, множественный выбор начнет действовать странно, то есть, если я выберу параметр, этот параметр немедленно отменяется снова, если я не щелкну этот параметр дважды. Понятия не имею, что там происходит.Вот код Plunker, кто-нибудь знает, что мне не хватает?
T

Thorsten Westheider

6 лет назад

Ответов: 2

Вернуться в тот же раздел на странице

На веб-странице ma у меня есть форма с полем проверки. Когда пользователь вводит неправильные данные в форму и нажимает кнопку «отправить», представление возвращается на верхнюю страницу и не видит формы. Затем он должен прокрутить вниз, чтобы увидеть и ввести действительные данные. Я использую этот код в контроллере:[HttpPost] public ActionResult Index(ContactForm contact) { return View("Index"); } Я бы хотел, чтобы после ввода неверных данных пользователь должен был видеть раздел формы (имя раздела - "#contact") с проверочной информацией (что не так), но не верхнюю страницу, как это присутствует.
k

kenzolek

6 лет назад

Ответов: 1

Скрыть столбец первичного ключа в представлении создания в ASP.Net MVC 5

У меня есть модель, созданная из базы данных (SQL Server), которая содержит атрибут TaskPK (первичный ключ и автоинкремент в SQL). Когда я создаю представление создания, этот атрибут также отображается. Но когда у меня есть идентификатор атрибута (первичный ключ и автоинкремент), этот атрибут не отображается в представлении создания, но значение все еще существует.Как это сделать с моим атрибутом TaskPK?Просмотр изображений:Код просмотра Модель Pict: Модель кода
I

Ian OctoBear

6 лет назад

Ответов: 2

Реализовать разбиение на страницы при частом изменении табличных данных

В моей базе данных таблица ChatMessage У которых есть столбец Идентификатор, Сообщение, Отправитель, Получатель.Теперь в моем репозитории есть метод получения сообщений.public IQueryable GetChatMessage(int PageNo, int PageSize, int ownerUserId, int friendUserId) { var query = this.GetQueryable(). Where(x => (x.Sender.Identifier == ownerUserId && x.Receiver.Identifier == friendUserId) || (x.Sender.Identifier == friendUserId && x.Receiver.Identifier == ownerUserId)); query = query.OrderByDescending(x => x.Identifier).Skip((PageNo - 1) * PageSize).Take(PageSize); return query; } Работает нормально. Но есть сценарий: позвольте мне открыть страницу, получить первые 10 записей, в то время как OtherUser отправит мне еще 2 сообщения.Теперь, когда я нажимаю на вторую страницу, я получаю следующие 10 сообщений, но они будут включать 2 повторяющихся сообщения (которые у меня уже есть на первой странице).Как этого избежать?Я хочу, чтобы при нажатии на вторую страницу я хотел получить следующие 10 записей, не считая этих 2 новых сообщений.Примечание: я не хочу сохранять номер последней строки извлечения в сеансе, так как это система чата, и в ней может одновременно находиться много пользователей.Я хочу это сделать, потому что вижу, что это так.по умолчанию Я загружал только последние 10 сообщений. Теперь, нажав loadmore, я добавлю следующие 10 сообщений к старым liсм.
A

Amit Kumar

6 лет назад

Ответов: 1

Изменения объекта модели не передаются обратно в контроллер

Я загружаю модель для просмотра и отображения. Затем вношу изменения в одно из полей и отправляю обратно. Согласно точке останова, я использую правильный метод действия, но переданная модель не содержит изменений.Я подозреваю, что у меня есть несвязанные элементы управления в представлении. Я пробовал оба варианта ниже, оба раза одна и та же проблема.@Html.TextBoxFor(bike => bike.Color) Я не правильно привязываю? Как мне это сделать?Контроллер, получивший точку останова, выглядит так. Обратите внимание, что переданный велосипед не содержит изменений согласно intellisense. Если я сделаю изменения вручную в VS, они сохранятся в БД.public ActionResult BikeStore(Bike bike) { ... return RedirectToAction("Bikes"); } Модель генерируется Code First.public partial class Bike { [Key] public Guid Id{get; set;} [Required] [StringLength(999)] public string Color { get; set; } } Отправка осуществляется с использованием этого.@Html.ActionLink("Submit", "BikeStore", "Home", @Model, null) Но если я сделаю следующее, работает, как в - добавление поступает в контроллер. Однако не фактическое содержимое каких-либо элементов управления на странице. Так что я уверен, что они не связаны, и я не могу понять, зачем и как их делать.@Html.ActionLink("Submit", "BikeStore", "Home", new Bike { Id = Model.Id, Color = Model.Color + "!" }, null)
u

user1675891

6 лет назад

Ответов: 1

Валидация запросов в asp.net mvc

Я разрабатываю 2 сайта. Первый для загрузки изображений, а второй для хранения изображений на хостинге изображений (оба сайта используют asp.net mvc 5).Доменное имя первого сайта следующее: vinachannel.com.На первом сайте я хочу отправить несколько изображений на хостинг через ajax:var f = new FormData(); $.ajax({ url: 'https://myimagehosting.com/home/upload', type: 'POST', data: f, processData: false, contentType: false }).done(function (data) { // logic... }) Экшен Upload в контроллере Home хостинга:[HttpPost] public JsonResult Upload() { if (Request.Files.Count > 0) { // start uploading... } } Сейчас у меня такая проблема: я хочу, чтобы хостинг изображений принимал только те запросы, которые отправлены с vinachannel.com. Например:[HttpPost] public JsonResult Upload() { if (Request.Files.Count > 0 && Request.Url.AbsoluteUri.StartsWith("vinachannel.com")) { // start uploading... } } или используя regex:var reg = new Regex(@"^(https://)?(www\.)?(vinachannel\.com)(.+)$"); if (Request.Files.Count > 0 && reg.IsMatch(Request.Url.AbsoluteUri)) { // start uploading... } Мой вопрос: Как я могу настроить атрибут для проверки всех запросов на действие Upload? [VinaChannel] // only requests from site vinachannel.com [HttpPost] public JsonResult Upload() { // ... } UPDATE: (на основе комментария @David и после статьи).public class VinaChannelFilter : ActionFilterAttribute, IActionFilter { void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) { var reg = new Regex(@"^(https://)?(www\.)?(vinachannel\.com)(.+)$"); if (reg.IsMatch(HttpContext.Current.Request.Url.AbsoluteUri)) { // what's next here...? } this.OnActionExecuting(filterContext); } }
T

Tân

6 лет назад

Ответов: 2

Маршрут ASP.NET MVC не разрешает контроллер/действие

У меня есть контроллер с именем DocumentsController внутри области с именем Public.public class DocumentsController : AsyncController { public async Task DownloadAsync(string fileName) { // ... } } В файле PublicAreaRegistration.cs у меня есть следующая настройка маршрутизации:public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute(null, "Public/Documents/Download/{fileName}", new { action = "Download", controller = "Documents", area = "Public" }); context.MapRoute( "Public_default", "Public/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional, area = "Public" }); } В представлении я вызываю Url.Action() следующим образом:@document.FileName Но несмотря на то, что url разрешается правильно (http://localhost/test/Public/Documents/Download/my-file.pdf), действие так и не вызывается.Но если я полностью удалю первый вызов MapRoute, url будет преобразован в http://localhost/test/Public/Documents/Download?fileName=my-file.pdf и метод действия будет вызван, как и ожидалось.Что я делаю не так?
R

RePierre

6 лет назад

Ответов: 2

Почему мне нужно объявлять новый контроллер, когда я добавляю стиль к ActionLink?

Я заметил нечто странное в своем проекте MVC. Я вернулся к ванильной версии, чтобы попробовать, и обнаружил, что следующее (последний пункт списка - мое единственное дополнение к проекту, за исключением действия Test в контроллере, возвращающего только пустой экземпляр View) работает хорошо. @Html.ActionLink("Home", "Index", "Home") @Html.ActionLink("About", "About", "Home") @Html.ActionLink("Contact", "Contact", "Home") @Html.ActionLink("Test", "Test", "Home") Однако, когда я добавил стиль к ссылке действия следующим образом, я получаю ошибку. Он работает по-прежнему, но теперь VS remarks, и когда я проверяю замечание, он спрашивает меня, хочу ли я создать новый контроллер Shared и действие Test. @Html.ActionLink("Home", "Index", "Home") @Html.ActionLink("About", "About", "Home") @Html.ActionLink("Contact", "Contact", "Home") @Html.ActionLink("Test", "Test", "Home", new { @style = "color: blue;" }) Почему это так? Является ли это вообще реальной проблемой?
K

Konrad Viltersten

6 лет назад

Ответов: 1

Как предотвратить скриншот определенной веб-страницы с помощью jquery или c#

Я хочу блокировать скриншот этой веб-страницы нажатием window + prtsc. или скриншот должен быть затемнен, как в netflix. или скриншот не должен быть читаемым
T

Tayyeb

год назад

Ответов: 2

2022 WebDevInsider