namespace Bloggie.Web.Controllers
{
public class AdminBlogPostsController : Controller
{
private readonly ITagRepository tagRepository;
private readonly IBlogPostsRepository blogRepository;
public AdminBlogPostsController(ITagRepository tagRepository, IBlogPostsRepository blogRepository)
{
this.tagRepository = tagRepository;
this. blogRepository = blogRepository;
}
public IBlogPostsRepository BlogRepository { get; }
\[HttpGet\]
public async Task\ Add()
{
var tags = await tagRepository.GetAllAsync();
//retriving all Names in Tag table
//many dropdown options
var Model = new AddBlogPostRequest
{
Tags = tags.Select(x =\> new SelectListItem { Text = x.Name, Value = x.Id.ToString() })
};
return View(Model);
}
\[HttpPost\]
public async Task\ Add(AddBlogPostRequest addBlogPostRequest)
{
//Map ViewModel to DomainModel
var blog = new BlogPost
{
Heading= addBlogPostRequest.Heading,
PageTitle= addBlogPostRequest.PageTitle,
Content= addBlogPostRequest.Content,
ShortDescription= addBlogPostRequest.ShortDescription,
FeaturedImageUrl= addBlogPostRequest.FeaturedImageUrl,
UrlHandle= addBlogPostRequest.UrlHandle,
PublishedDate= addBlogPostRequest.PublishedDate,
Author= addBlogPostRequest.Author,
Visible= addBlogPostRequest.Visible,
};
var selectedTags = new List\();
//Map tags from selected tags
foreach(var selectedtagsId in addBlogPostRequest.SelectedTags)
{
var selectedTagIdAsGuid = Guid.Parse(selectedtagsId);
//Fetch from database
var existingtag=await tagRepository.GetTagAsync(selectedTagIdAsGuid);
if (existingtag != null)
{
selectedTags.Add(existingtag);
}
}
//Mapping tags back to domainModel
blog.Tag = selectedTags;
await blogRepository.AddAsync(blog);
return RedirectToAction("Add");
}
}
}
using Microsoft.AspNetCore.Mvc.Rendering;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace Bloggie.Web.Models.ViewModels
{
public class AddBlogPostRequest
{
public string Heading { get; set; }
public string PageTitle { get; set; }
public string Content { get; set; }
public string ShortDescription { get; set; }
public string FeaturedImageUrl { get; set; }
public string UrlHandle { get; set; }
public DateTime PublishedDate { get; set; }
public string Author { get; set; }
public bool Visible { get; set; }
//IEnumerable → many items
// SelectListItem → okka option
// Together →
public IEnumerable Tags { get; set; }
//stores User selected values in this
public string[] SelectedTags { get; set; }=Array.Empty();
}
}
namespace Bloggie.Web.Models.Domain
{
public class Tag
{
public Guid Id { get; set; }
public string Name { get; set; }
public string DisplayName { get; set; }
public ICollection BlogPost { get; set; } //one tag can have multiple BlogPosts
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... gs-to-blog
Как исправить ошибку FirstOr Default в EF Core и как сопоставить выбранные теги с BlogPost в ASP.Net, почему find возвра ⇐ C#
Место общения программистов C#
1768720027
Anonymous
namespace Bloggie.Web.Controllers
{
public class AdminBlogPostsController : Controller
{
private readonly ITagRepository tagRepository;
private readonly IBlogPostsRepository blogRepository;
public AdminBlogPostsController(ITagRepository tagRepository, IBlogPostsRepository blogRepository)
{
this.tagRepository = tagRepository;
this. blogRepository = blogRepository;
}
public IBlogPostsRepository BlogRepository { get; }
\[HttpGet\]
public async Task\ Add()
{
var tags = await tagRepository.GetAllAsync();
//retriving all Names in Tag table
//many dropdown options
var Model = new AddBlogPostRequest
{
Tags = tags.Select(x =\> new SelectListItem { Text = x.Name, Value = x.Id.ToString() })
};
return View(Model);
}
\[HttpPost\]
public async Task\ Add(AddBlogPostRequest addBlogPostRequest)
{
//Map ViewModel to DomainModel
var blog = new BlogPost
{
Heading= addBlogPostRequest.Heading,
PageTitle= addBlogPostRequest.PageTitle,
Content= addBlogPostRequest.Content,
ShortDescription= addBlogPostRequest.ShortDescription,
FeaturedImageUrl= addBlogPostRequest.FeaturedImageUrl,
UrlHandle= addBlogPostRequest.UrlHandle,
PublishedDate= addBlogPostRequest.PublishedDate,
Author= addBlogPostRequest.Author,
Visible= addBlogPostRequest.Visible,
};
var selectedTags = new List\();
//Map tags from selected tags
foreach(var selectedtagsId in addBlogPostRequest.SelectedTags)
{
var selectedTagIdAsGuid = Guid.Parse(selectedtagsId);
//Fetch from database
var existingtag=await tagRepository.GetTagAsync(selectedTagIdAsGuid);
if (existingtag != null)
{
selectedTags.Add(existingtag);
}
}
//Mapping tags back to domainModel
blog.Tag = selectedTags;
await blogRepository.AddAsync(blog);
return RedirectToAction("Add");
}
}
}
using Microsoft.AspNetCore.Mvc.Rendering;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace Bloggie.Web.Models.ViewModels
{
public class AddBlogPostRequest
{
public string Heading { get; set; }
public string PageTitle { get; set; }
public string Content { get; set; }
public string ShortDescription { get; set; }
public string FeaturedImageUrl { get; set; }
public string UrlHandle { get; set; }
public DateTime PublishedDate { get; set; }
public string Author { get; set; }
public bool Visible { get; set; }
//IEnumerable → many items
// SelectListItem → okka option
// Together →
public IEnumerable Tags { get; set; }
//stores User selected values in this
public string[] SelectedTags { get; set; }=Array.Empty();
}
}
namespace Bloggie.Web.Models.Domain
{
public class Tag
{
public Guid Id { get; set; }
public string Name { get; set; }
public string DisplayName { get; set; }
public ICollection BlogPost { get; set; } //one tag can have multiple BlogPosts
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79870401/how-to-fix-firstor-default-error-in-ef-core-and-how-to-map-selected-tags-to-blog[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия