2017-10-21 71 views
-3

我的Razor视图接受一个模型显示@ Html.TextBoxFor值...我在此代码..ASP MVC Razor视图并不想从模型

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

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

显示“问心无愧“当模特是不是空...做了一些调试,看看是否MY_VALUE设置正确...嗯

编辑:

谢谢你的意见。

有点新的ASP MVC。一些我想要做的背景:

  1. 我有一个主视图Main.cshtml,它显示记录。每个记录都可以通过点击图形来编辑。

  2. JS代码抓取record_id并对应用程序控制器/ editApp操作进行Ajax调用。

  3. 我在Main.cshtml中有一个partial _EditApplication.cshtml来显示我的选项卡式jQuery UI对话框。并且还使用_AddAppForm.cshtml部分,它将模型显示在数据字段中。

    ....我认为这是我的问题(其中包括其他大声笑)......我在主视图中调用partial(_EditApplication.cshtml)...并且我返回了同样的部分在我的控制器与相关模型的操作。

代码:

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> 

JS代码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 - 部分

@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> 

应用程序控制器 - 操作: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 - 在_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

什么都在做,标志着下来纯缺乏了解 –

+1

问题使用'HtmlHelper'方法时,不要尝试设置'value'属性。在将模型传递给视图之前,您可以在GET方法中设置该属性的值。 –

+0

这就是我通常所做的......我有一个糟糕的设计问题,我在想..我在Main.cshtml中使用了相同的部分,并将相同的部分与数据库中的模型和关联值一起返回。在Main中,局部只需要一个空模型......所以当我去显示时......我说,如果它是空的,那么只显示一个空的字段。 为什么我使用相同的部分: - 如果我不在Main.cshtml中包含部分,我的jQuery对话框w/tabs不会弹出。 - 我还需要选项卡来显示模型数据。 – MAR

回答

0

所以,是的,我看着办吧......万一有人被卡住这样...变化,使:

Main.cshmtl:

加入这里的部分不能正常工作,有一个div标签来代替它W/ID将包含部分...

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

JS代码在Main.cshtml:

成功函数应该填充div和获得标签/对话会。

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

对_EditApplication.cshtml和Controller没有改变。

清理_AddAppForm.cshmtl ...

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