2017-10-21 49 views
-3

mon avis de rasoir est d'accepter un modèle ... et j'ai ce code dans ce ..ASP MVC Razor View ne veut pas montrer la valeur @ Html.TextBoxFor du modèle

@{ 
    var my_value = "wth"; 
    if (Model.app != null) 
    { my_value = Model.app.name; } 
} 

@Html.TextBoxFor(a => a.app.name, new { @Value = my_value }) 

spectacles de wth «lorsque le modèle est non nul ... a fait une mise au point pour voir si MY_VALUE est réglé correctement ... hmmm

Edit:

Merci pour les commentaires.

Un peu nouveau pour ASP MVC. Quelques informations sur ce que j'essaie de faire:

  1. J'ai une vue principale, Main.cshtml, qui montre les enregistrements. Chaque enregistrement peut être modifié en cliquant sur glyphicon. Le code JS saisit le paramètre record_id et appelle Ajax à l'action Application Controller/editApp. J'ai un partiel, _EditApplication.cshtml, dans Main.cshtml, pour afficher mon interface de l'interface utilisateur jQuery à onglets. Et utilise également _AddAppForm.cshtml partielle qui prend un modèle à afficher dans les champs de données.

    .... Je pense que c'est là où mon problème est (entre autres lol) ... J'appelle le partiel (_EditApplication.cshtml) dans la vue principale ... et je retourne le même partiel dans mon Action du contrôleur avec un modèle associé.

code:

Main.cshmtl

@{ AppDBServer this_ads = new AppDBServer(); } 
@Html.Partial("_EditApplication", this_ads) 

<div [email protected]_id.ToString() class="glyphicon glyphicon-pencil btn_edit_app" aria-hidden="true" style="color:blue; cursor:pointer"></div> 

Code JS dans Main.cshtml

$('.btn_edit_app').click(function() { 
     var app_to_edit = $(this).attr('id'); 
     $.ajax({ 
      url: '/Application/editApp', 
      contentType: 'application/html; charset=utf-8', 
      data: { app_id: app_to_edit}, 
      type: 'GET', 
      dataType: 'html', 
      success: function (result) {}, 
     }); 
     $('#edit_tabs').tabs({ active: 0 }); 
     $('#edit_dialog').dialog({ width: 700, height: 400 }); 
    }); 

_EditApplication.cshtml - partielle

@using NameSpace.Models 
@model AppDBServer 

<div id="edit_dialog" title="Edit Application" style="display: none"> 
    @using (Html.BeginForm("saveApps", "Application", new { isNew = false })) { 
     <div id="edit_tabs"> 
      <ul><li><a href="#edit_application">Application</a></li></ul> 
       @Html.Partial("_AddAppForm", @Model) 
     </div> 
} 
</div> 

application Controller - Action: editApp

namespace SHS_Connect.Controllers 
{ 
    public class ApplicationController : Controller 
    { 
     public ActionResult editApp(int app_id) 
      { 
       AppDBServer ads = new AppDBServer(); 
       ads = findADS(app_id); 
       return PartialView("_EditApplication", ads); 
      } 
    } 
} 

_AddAppForm.cshmtl - utilisé partiel dans _EditApplication.cshtml

@using NameSpace.Models 
@model AppDBServer 

<div id="application"> 
    <div class="form-group"> 
     @Html.LabelFor(a => a.app.name) 

     @{ 
      var my_value = "wth"; 
      if (Model.app != null) 
      { my_value = Model.app.name; } 
     } 
     @Html.TextBoxFor(a => a.app.name, new { @Value = my_value }) 
    </div> 
</div> 
+1

Que font, pour marquer en bas question pur manque de compréhension –

+1

Ne tentez pas de définir l'attribut 'value' lorsque vous utilisez les méthodes' HtmlHelper'. Vous définissez la valeur de la propriété dans la méthode GET avant de transmettre le modèle à la vue. –

+0

C'est ce que je fais normalement ... J'ai un mauvais problème de conception je pense .. J'utilise le même partial dans mon Main.cshtml et retourne ce même partiel avec le modèle et les valeurs associées de la DB. Dans le Main, partiel prend juste un modèle vide ... alors quand je vais à l'affichage .. Je dis, si c'est nul, alors montrez simplement un champ vide. Pourquoi j'utilise les mêmes Partials: - Si je n'inclue pas le partial dans Main.cshtml, ma boîte de dialogue jQuery w/tabs ne fait pas de popup. - J'ai également besoin des onglets pour afficher les données du modèle. – MAR

Répondre

0

Alors, oui, je le comprendre ... au cas où quelqu'un est bloqué comme celui-ci ... les changements à faire:

Main.cshmtl:

ajouter le ici partiel ne fonctionne pas, doivent le remplacer par une balise div w/id qui contiendra la partie ...

<div id="div_editapp_dialog"></div> 

code JS dans Main.cshtml:

La fonction de succès devrait alimenter la div et obtenir les onglets/dialogue en cours.

success: function (result) { 
        $('#div_editapp_dialog').html(result); 
        $('#edit_tabs').tabs({ active: 0 }); 
        $('#edit_dialog').dialog({ width: 700, height: 400 }); 
       } 

Aucun changement à _EditApplication.cshtml et le contrôleur.

Nettoyer _AddAppForm.cshmtl ...

<div class="form-group"> 
    @Html.LabelFor(a => a.app.name) 
    @Html.TextBoxFor(a => a.app.name) 
</div>