我目前有一個視圖,它通過TechnicianViewModel
返回IEnumerable
技術人員集合。視圖模型填充良好並正確顯示對象。如何讓View通過ViewModel將ID返回給控制器?
但是,此刻我需要有人指導我選擇特定技術人員的正確方向。
如果我在技術人員上點擊More Info
,將會啓動一個[HttpGet]
請求,這將導致queryString。而這正是在這一項目的要求(該項目的要求:沒有查詢字符串應該出現在URL)
這裏是視圖: -
@model IEnumerable<ActionAugerMVC.ViewModels.TechnicianViewModel>
<div class="row">
@foreach (var item in Model)
{
<div class="col-sm-6 col-md-3">
<div class="">
<div class="">
<div class="">
@item.UserName
</div>
<div class="">
Technician
</div>
</div>
<div class="">
<img src="~\[email protected]()" class="img-responsive" alt="...">
</div>
<div class="">
<p class="overlay__desc">
@item.Bio
</p>
<ul class="overlay__social">
<li><a href="#"><i class="ion-social-twitter"></i></a></li>
<li><a href="#"><i class="ion-social-facebook"></i></a></li>
<li><a href="#"><i class="ion-social-skype"></i></a></li>
<li><a href="#"><i class="ion-social-whatsapp-outline"></i></a></li>
</ul>
<a href="@Url.Action("Profile","Technician",new { url = item.GenerateURL() })" class="btn btn-accent">More info</a>
</div>
</div>
</div>
}
</div> <!--/.row -->
這裏是視圖模型: -
public class TechnicianViewModel
{
public Guid ID { get; set; }
public string UserName { get; set; }
public string Bio { get; set; }
public string GenerateName()
{
string str = GenerateURL();
str = str + ".jpg";
return str;
}
public string GenerateURL()
{
string phrase = string.Format("{0}", UserName);
string str = phrase.ToLower();
str = Regex.Replace(str, @"\s", "-");
return str;
}
}
如何避免我的控制方法是一種[HttpGet]
,因爲我曾在這裏實現,這樣我可以有一個由視圖返回的視圖模型對象的ID。
[HttpGet]
[Route("technician/profile/calgary-{url}")]
public IActionResult Profile(Guid? ID,string url)
{
var Profile = unitOfWork.TechnicianRepository.GetByGuidId(ID);
return View(Profile);
}
如果你想不把他們作爲routevalue訪問模特屬性,則需要發佈形式提交元素,或者經由所提交:那些將被默認路由配置被照顧jQuery的。 – akerra
@akerra所以我必須改變當前持有'Url.Action'到表單發佈按鈕的'a'鏈接? –
是的,我會推薦像'更多信息'然而,您需要某種方式來了解選擇哪個技術人員,因此您可能需要將隱藏div的值設置爲所選技術人員的ID並將其綁定到新模型字段 – akerra