Подробности asp.net mvc4 - PullRequest
       2

Подробности asp.net mvc4

0 голосов
/ 13 марта 2012

Я пытаюсь открыть детали объекта "Ansatte". Проблема в том, что параметр Int имеет значение только null

У меня есть это представление

@model IEnumerable<EL4.Administrasjon.Models.Ansatte>
<table>
@foreach (var item in Model) {
<tr data-pkey="@item.IdBaksystem">        
    <td>
        @Html.DisplayFor(modelItem => item.AnsNavn)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ePostAdresse)
    </td>        

    <td class="rowControl hidden">
        @Html.ActionLink("Details", "Details", new { id=item.ID_Ansatt }) |                
    </td>
</tr>

}

Тогда у меня это в контроллере

 public class HMAnsatteController : Controller
{
    //
    // GET: /HMAnsatte/

    public ActionResult Index()
    {
        HM_000_EL4Entities hmEnt = new HM_000_EL4Entities();

        List<Ansatte> HMansatte = hmEnt.Ansatte.ToList();

        return View(HMansatte);
    }

    public ActionResult Details(int? ansattNr)
    {
        if (ansattNr == null)
        {
            return null;
        }
        else
        {
            Entities ent = new Entities();

            Ansatt el4Ansatt = ent.Ansatt.Where(a => a.AnsattNr == ansattNr).First();

            return View(el4Ansatt);
        }
    }

}

Когда я нажимаю на детали, URL выглядит корректно: http://localhost:50009/HMansatte/Details/1

Но int ansattNr всегда "нулевой"

Ответы [ 3 ]

0 голосов
/ 13 марта 2012

у вас есть это ...

public ActionResult Details(int? ansattNr)

, и это должно быть из-за динамического объекта, который вы передаете по ссылке

public ActionResult Details(int? id)

или измените его вместо этого ...

@Html.ActionLink("Details", "Details", new { ansattNr=item.ID_Ansatt })
0 голосов
/ 13 марта 2012

Вы передаете переменную с именем id в контроллер (который ваш global.asax сопоставил с URL-адресом, поэтому он показывает, как это происходит), но ваш контроллер ищет переменную с именем ansattNr.

Вы можете либо изменить имя переменной в вашем контроллере на id, либо изменить ссылку на действие на @Html.ActionLink("Details", "Details", new { ansattNr=item.ID_Ansatt }), но вторая опция изменит форматирование вашего URL.

0 голосов
/ 13 марта 2012

В строке, где вы создаете свою ссылку действия, вы называете параметр «id», но в своем методе действия вы называете его «ansattNr».Эти имена должны быть одинаковыми.Поскольку маршрутизация по умолчанию уже настроена для «id», я просто изменил бы сигнатуру метода вашего действия на следующее:

public ActionResult Details(int? id)

Это должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...