2014-12-26 2 views
0

Я хочу, чтобы заполнить форму с Id и я сделал URL таким образомЗаполните форму с ASP.NET MVC QueryString

местного хозяин: 1613/пациент/Index/1

Где 1 - это идентификатор. И я хочу, чтобы заполнить мою форму с данными пациента с Id 1. Но ниже функции не вызывается в контроллере

public ActionResult Index(int id) 
{ 

    Patient p = new CEntities().Patients.Find(id); 


    return View(p); 
} 

вместо этого, я получаю в

public ActionResult Index() 
{ 

    return View(); 
} 

Я новичок в ASP.NET MVC, я понятия не имею, чтобы заполнить форму любым другим способом, я нашел способ, но он показывает весь мой объект в строке запроса, которая является небезопасной. И это выше решение не работает.

Пожалуйста, предложите мне хорошее решение.

+0

Украсьте действие 'Index (int id)' с помощью 'HttpGet'. –

ответ

2

Насколько я знаю, вы действительно не можете перегружать методы действий в ASP.NET-MVC, поэтому может быть только один метод действия Index (без каких-либо дополнительных комментариев). Конечно, вы можете определить несколько методов с тем же именем, но затем вы можете добавить аннотацию [HttpPost] (или другой HTTP-метод) выше метода действия, чтобы использовать его, например, после отправки формы.

Создание опционные может быть полезным:

public ActionResult Index(int? id){ 
     if(id.HasValue()){ 
      Patient p = new CEntities().Patients.Find(id); 
      return View(p); 
     } 
    return View(); 
     } 

Пожалуйста, обратите внимание: Can you overload controller methods in ASP.NET MVC?

Еще один совет: попытайтесь использовать подмостки и посмотреть, как шаблон делает это для вас:

1. Щелкните правой кнопкой мыши на папке контроллера

2.Add-> Новый контроллер

3.Контроллер с действиями чтения/записи Entity Framework (насколько я помню 3-го сверху)

4.Выберите класс модели.

5.Выберите контекст db (класс, который поддерживает соединение с базой данных).

6.Ok.

Он будет генерировать контроллер с видами, повеселиться.

0
local-host:1613/Patient/Index/1 

Этот путь должен ударять ваш метод действия в:

public ActionResult Index(int id) 

Пожалуйста, проверьте файл RouteConfig.cs и убедитесь, что у вас есть маршрут по умолчанию настроен правильно:

 routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

Попробуйте прокомментировать другой метод действия индекса «// public ActionResult Index()» и посмотрите, что происходит при попытке перейти на локальный хост: 1613/Пациент/Индекс/1

Смежные вопросы