2011-08-03 3 views
1

J'utilise Razor HtmlHelpers. en utilisant le code ci-dessous j'ai essayé d'imprimer la valeur de ViewItemDto mais il montre toujours 0 pour utiliser @ Html.TextBoxFor ou n'importe quelle méthode @Html ... For (x => ..).Comportement étrange dans Razor MVC tout en utilisant Html.Helpers

Quelqu'un a-t-il une idée de ce qui se passe?

Remarque - La méthode renvoie la valeur correcte car je peux déboguer et voir la valeur dans la fenêtre de débogage sur le côté des vues.

[DataContract] 
[Serializable] 
public class ViewItemDto 
{ 
    [DataMember]   
    public decimal ViewItemId { get; set; } 

    [DataMember]   
    public string ItemName { get; set; } 
} 

From Controller Return 
public ActionResult Index() 
    { 
     ViewItemDto viewItem = new ViewItemDto(); 
     viewItem.ItemName = "OldData"; 
     viewItem.ViewItemId = 10; 
     return View(viewItem); 
    } 

    public PartialViewResult SaveData(ViewItemDto viewItem) 
    { 
     viewItem.ItemName = "NewData"; 
     viewItem.ViewItemId = 100; 
     return PartialView("ViewUserControl1", viewItem); 
    } 

On View ViewUserControl1 

@model Testing.Models.ViewItemDto 
<div id="divSave"> 
@using (Ajax.BeginForm("SaveData", "Home", new AjaxOptions() 
{ 
    UpdateTargetId = "divSave", 
    OnSuccess = "OnSuccess", 
    InsertionMode = InsertionMode.Replace 
})) 
{ 
    @Html.TextBoxFor(x => x.ViewItemId)//Shows 10 
    @Html.TextBox("ID", Model.ViewItemId) //Shows proper value 100 
    @Html.TextBoxFor(x => x.ItemName)//Shows oldData value 
    <input type="submit" name="name" value="Submit" /> 
} 

et Index.cshtml

@model Testing.Models.ViewItemDto 
@{ 
    ViewBag.Title = "Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<h2>Index</h2> 

@Html.Partial("ViewUserControl1", Model); 
+0

J'étais non activé pour retourner 'viewItem' comme vous l'avez dit, du contrôleur. Cela me donne une erreur de compilation. –

+0

Je suis désolé pour le contrôleur j'ai écrit un exemple de code comme return ViewItem..i retourne PartialView lui-même.Tout fonctionne correctement, sauf les valeurs qui sont affichées dans la vue. –

Répondre

1

ne devriez-vous:

return PartialView(viewItem); 

au lieu de:

return viewItem; 
0

En changeant le code de votre contrôleur à ce qui suit, il oeuvra

public PartialViewResult SaveData(ViewItemDto viewItem) 
{ 
    viewItem.ViewItemId = 100; 
    return viewItem; 
} 

j'étais de reproduire votre désactivé problème, étant donné que le code fourni même pas compilé.

Questions connexes