2013-07-02 6 views
2

Так я получил эту WebProject я сейчас занимаюсь, и в 4/5 просмотров Im используяmvc4 ActionLink проходя переменную

@Html.ActionLink("Back to List", "Index", new { id=Model.ClientID}) 

Все мнения, вернуть меня в мой список Зависит мой «Создать новый взгляд» Это также будет единственным видом не загружать, что дает мне освобождение от «System.NullReferenceException»

Я смущен, почему это единственное представление, которое не позволит мне передать ему clientID (поскольку i нужно не только это, но также и идентификатор округа, чтобы создать новый округ, и, тем более, сообщая мне, что он является нулевым.

Если я удаляю строку кода выше моего кода, работает отлично (за исключением того, что я добавляю два поля ID в представление вида, очевидно), что заставило меня думать, что это может быть мой контроллер.

Вот мое действие от Givin контроллера для создания

// GET: /County/Create 
    public ActionResult Create() 
    { 
     return View(); 
    } 

для сравнения здесь является редактировать действие в том же контроллере

public ActionResult Edit(int id = 0) 
    { 
     dbCounty countys = db.Countys.Find(id); 
     if (countys == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(countys); 
    } 

Я также судимым добавить этот код к созданию новым actionlink, когда я получаю эту ошибку

HTTP Error 404.0 - Not Found 
The resource you are looking for has been removed, had its name changed, or is temporarily   unavailable. 
Most likely causes: 

The directory or file specified does not exist on the Web server. 
The URL contains a typographical error. 
A custom filter or module, such as URLScan, restricts access to the file. 

Что я делаю неправильно здесь ....

Мой проект построен на модели иерархию, один клиент Многие Countys (если вам нужно больше кода, дайте мне знать)

заранее спасибо.

Совет:

должна быть причина (мое предположение), почему при удалении этой строки кода она работает (поэтому она должна быть эта строка кода ??) - должен быть другой путь прохождения он (ClientId имеет значение 1)

@Html.ActionLink("Back to List", "Index", new { id=Model.ClientID}) 

Edit Index контроллера, необходимый:

public ActionResult Index([Bind(Prefix="id")] int CID=0) 
    { 
     var clnt = db.Clients.Find(CID); 

     if (clnt != null) 
     { 
      return View(clnt); 
     } 

     return HttpNotFound(); 

    } 

EDIT: новый создать Acti на от Countys контроллер

public ActionResult Create(int id=0) 
    { 
     dbCounty countys = db.Countys.Find(id); 
     if (countys == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(countys); 
    } 

я также судимым работаю

public ActionResult Create(int id=0) 
     { 
     dbClient Client = db.Clients.Find(id); 
     if (Client == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(Client); 
    } 

(так как я пропускание ClientId - путь построены модели он должен добавить уездный идентификатор при создании этой новой строки в база данных с идентификатором clientID (passVariable)

ответ

2

Вы, кажется, не передаете модель в представление «Создать». В контроллере Create вам нужно что-то вроде следующего, где Client - это объект, у которого есть свойство ClientID.

public ActionResult Create() 
{ 
    ... 
    return View(Client); 
} 

EDIT:

Чтобы уточнить, в вашем Create View, модель имеет нулевое значение, потому что вы не прошли его один в контроллере.Посмотрите на работающие контроллеры и посмотрите, что он передает в представление. Вам нужно будет сделать что-то подобное для Create.

+0

ок. поэтому я разместил @ Html.ActionLink («Создать новый», «Создать»), новый {CID = Model.ClientID}) в моем индексе, я прошел через clientID равным 1, когда я нажимаю на него, он взрывается, а не дает мне шанс попасть в Create Action от Countys Controller ..., хотя я изменил свой контроллер создания, отредактировал его за несколько секунд. – Pakk

+0

Похоже, вы на правильном пути, но теперь вы проходите мимо id как «CID» в представлении индекса, и ожидая, что int-name «id» в контроллере Create. Если вы сделаете их одинаковыми, я думаю, что это сработает для вас. – Lily

+0

genious, kinda rediculous, что вам нужно передать переменную, которую он ожидает, ха-ха, но потом снова im от vb.net, и он никогда не делал diff, спасибо @lily – Pakk

1

Я попытаюсь подвести итог вашей проблеме. Вы сказали, что если вы удалите

@Html.ActionLink("Back to List", "Index", new { id=Model.ClientID}) 

Там нет errror, и ошибка происходит, когда ваш взгляд генерации. Эти два факта означает, что в 99% ваш Model является недействительным

+0

... dang well ok Позвольте мне проверить, что там происходит, но я почти уверен, что я передаю идентификатор клиента с созданием нового actionlink для Создайте представление из начального указателя. – Pakk

0

Убедитесь, что в

@ Html.ActionLink ("Назад к списку", "Index", новый {идентификатор = Model.ClientID})

Модель не является нулевой, в противном случае вы получите нулевую ссылку исключения

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