با توجه به مطالب مطرح شده در متن فوق و
نحوه استفاده از ViewModel در ASP.NET MVC و همچنین توصیههایی که در رابطه با آدرسدهی صحیح
WebApiها وجود دارد (استفاده از اسم جمع، استفاده از اسم به جای فعل و ...)، در رابطه با
آدرسدهی صحیح برای تامین اطلاعات مورد نیاز Viewها (در حالت ویرایش یا افزودن)، در سمت کلاینت که استفاده کننده آن میتواند یک کامپوننت Angular یا هر نوع دیگری باشد آیا دوستان نظر و Best Practice دارند؟
به طور مثال برای ویرایش و افزودن یک محصول به صورت زیر عمل میکنیم:
//ViewModels
public class CustomListItem
{
public int Id { get; set; }
public string Text { get; set; }
}
public class ProductAddGetViewModel
{
public IEnumerable<CustomListItem> Categories { get; set; }
public IEnumerable<CustomListItem> Groups { get; set; }
}
public class ProductAddViewModel
{
public string Name { get; set; }
public bool IsActive { get; set; }
public int CategoryId { get; set; }
public int GroupId { get; set; }
}
public class ProductEditGetViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<CustomListItem> Categories { get; set; }
public IEnumerable<CustomListItem> Groups { get; set; }
}
public class ProductEditViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
public int GroupId { get; set; }
}
و
// ProductsController - ApiControler
// GET: api/products/views/add
[HttpGet("views/add")]
public async Task<IActionResult> GetAdd()
{
ProductAddGetViewModel model = await _productService.GetAddModelAsync();
return Ok(model)
}
// POST: api/products
[HttpPost]
public async Task<IActionResult> Add(ProductAddViewModel model)
{
...
}
// GET: api/products/5/views/edit
[HttpGet("{id}/views/edit")]
public async Task<IActionResult> GetEdit(int id)
{
ProductEditGetViewModel model = await _productService.GetEditModelAsync(id);
return Ok(model)
}
// PUT: api/products/5
[HttpPut("{id}")]
public async Task<IActionResult> Edit(int id, ProductEditViewModel model)
{
...
}
با توجه به اینکه حالت فوق، احتمالاً دو متد از چند متد مورد استفاده میباشد، آیا دوستان درباره متدهای
GetAdd ,
GetEdit و همچنین
آدرسدهی صحیح این نوع متدها که قرار است از سمت کلاینت فراخوانی شود نظری دارند؟
پ.ن: درباره نامگذاری بهتر ViewModelها هم اگر نظری هست ممنون میشم بیان شود.