Oui u peut, essayer
public class CategoryController : Controller {
// GET: /Category/
// OR
// GET: /Category/State_name
public ActionResult Index(string State_name) {
if (!string.IsNullOrWhiteSpace(State_name)) {
int? State_id = FindStateIdFromStateName(State_name); // retrive state_id from datastore where state_name == State_name
if (State_id.HasValue) { // means the currect state_name passed to action
var model = FindStateById(State_id.Value);
return View("Cities", model); // will renders Cities.cshtml with specified model
} else {
// means the specified state_name not found! u can do something else, or allow continue bellow lines
}
}
return View(); // will render normal Index.cshtml
}
}
Laissez-moi savoir si vous avez des questions ou avez besoin d'éclaircissements sur une partie quelconque.
MISE À JOUR
J'ai un problème avec la façon! Vous obtenez l'ID de db avec State_name, puis obtenez le modèle de db par State_name! Pourquoi ne pas récupérer le modèle de db par State_name à la première fois? regard:
public class CategoryController : Controller {
// GET: /Category/
// OR
// GET: /Category/State_name
public ActionResult Index(string State_name) {
if (!string.IsNullOrWhiteSpace(State_name)) {
var model = FindStateByName(State_name);
if(model != null)
return View("Cities", model);
else
// means the specified state_name not found! u can do something else, or allow continue bellow lines
}
return View(); // will render normal Index.cshtml
}
}
et si vous êtes sur EF, vous pouvez créer cette méthode:
public State FindStateByName(state_name){
using(var context = new YourEntityContext()){
return context.States.SingleOrDefault(s => s.Name.ToLower() == state_name.ToLower());
}
}
Pourquoi ne pas utiliser de cette façon?
Nous vous remercions de votre aide. Je suppose qu'il n'y a pas un moyen de le faire sans aller à la base de données pour récupérer ID? – 22db05
Voulez-vous dire que vous voulez récupérer l'ID du client sans le mettre dans la chaîne de requête? –
J'ai un problème avec ça! Vous obtenez d'abord l'ID de DB avec le nom, puis obtenez le modèle avec ID! Pourquoi ne pas avoir le modèle avec nom à la première fois? –