2013-06-14 2 views
1

Может ли кто-нибудь сказать, что случилось с моим просмотром? мои значения модели отображаются корректно в моем представлении, но они не возвращаются в действие контроллера. public ActionResult DeleteConfirmed (контакты ClientModel), мой ClientModel возвращается null.Просмотреть значения, не возвращенные в действие контроллера

Вид:

@model ContactManager.Models.ClientModel 

@{ 
    ViewBag.Title = "Delete Information"; 
} 

<h2>Delete Information</h2> 

<h3>Are you sure you want to delete this?</h3> 
<fieldset> 
    <legend>Details</legend> 

    <div class="display-label">ID</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.CanaClie0012.Client00130012) 
    </div> 

    <div class="display-label">Name</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.Clientes0013.Nombre0013) 
    </div> 

    <div class="display-label">Contact Number</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.CanaClie0012.Direcc0012) 
    </div> 

    <div class="display-label">Country</div> 
    <div class="display-field"> 
     @Html.DisplayFor(model => model.CanaClie0012.F1Pais00200012) 
    </div> 

</fieldset> 
@using (Html.BeginForm()) { 
    <p> 
     <input type="submit" value="Delete" /> | 
     @Html.ActionLink("Back to List", "Index") 
    </p> 
} 

Действие контроллера:

[HttpPost, ActionName("Delete")] 
public ActionResult DeleteConfirmed(ClientModel contacts) 
     { 
      contacts.Clientes0013.Client0013 = contacts.CanaClie0012.Client00130012; 
      contacts.Clientes0013.F1Pais00200013 = contacts.CanaClie0012.F1Pais00200012; 
      Clientes0013 clientes0013 = db.Clientes0013.Find(contacts.Clientes0013.Client0013, contacts.Clientes0013.F1Pais00200013); 
      db.Clientes0013.Remove(clientes0013); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
+0

В дополнении к указанному ниже ответу - Вы попробуйте использовать это '@using (Html.BeginForm (" ActionName "," ControllerName ", FormMethod.Post, null))' – wuhcwdc

+0

@PankajGarg это хорошее предложение, но я не думаю, что это необходимо, используя '@ используя (Html.BeginForm()) 'навсегда, и он работает. Я думаю, что может быть что-то еще. – SOfanatic

+0

hi pankaj, модель все еще возвращен null. Я не вижу, что здесь пропало. – Romeo

ответ

3

1. Храните помощников внутри формы, как показано ниже.

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, null)) 
{ 
    @Html.DisplayFor(i => i.PropertyName); 
    <input type="submit" name="Submit" value="Submit" /> 
} 

2. Для того, чтобы отправить форму и отправить модель в сообщении методы действий, вы должны использовать скрытое поле вместе с каждым Displayfor Helper.

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, null)) 
{ 
    @Html.HiddenFor(i => i.PropertyName); 
    @Html.DisplayFor(i => i.PropertyName); 
    <input type="submit" name="Submit" value="Submit" /> 
} 

3. Вы не сможете увидеть значение Модели в сообщении Метод действий, когда вид, как показано ниже ..

@Html.HiddenFor(i => i.PropertyName); 
@Html.DisplayFor(i => i.PropertyName); 
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, null)) 
{ 

    <input type="submit" name="Submit" value="Submit" /> 
} 
+0

Это правильно, но в любом случае ему все равно нужно будет включить '@ Html.HiddenFor()' – SOfanatic

+0

очень приятный Pankaj. это сделало работу. Спасибо. – Romeo

+0

@rcadaoas Пожалуйста, отметьте это как ответ, если это вам помогло! – wuhcwdc

1

Это происходит потому, что вы используете DisplayFor для всех свойств. DisplayFor ничего не отправит в POST, он не создает вход. Вы можете добавить @Html.HiddenFor(model => model.CanaClie0012.Client00130012) и т. Д. К каждому из ваших свойств, чтобы ваш вид мог отправить что-либо обратно.

+0

Я добавил Hiddenfor для каждого из моего поля, но модель по-прежнему возвращается null. Я использовал displayfor для моего другого приложения, и он отлично работает. – Romeo

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