我有一个视图,显示如下文本框:
@Html.TextBoxFor(m => m.CodeGuest, new {style = "display: none"})
Run Code Online (Sandbox Code Playgroud)
它通过javascript显示(因此用户单击一个复选框).
如果未启用javascript,我必须删除此行(style = "display: none"),以便默认显示文本框.
我有一个控制器,其中一个方法(操作)访问我的项目数据库.该方法检查项目类型.仅当从我的数据库中检索的项目是特定类型时,如何显示部分视图?
控制器动作示例:
public ActionResult CheckItem(Koko model)
{
var item = db.Items.Where(item => item.Number == model.Number).First();
if(item.Type=="EXPENSIVE")
{
//show partial view (enable my partial view in one of my Views)
}
}
Run Code Online (Sandbox Code Playgroud) 我正在MVC3中编写一个调查应用程序.我有这个课(简化):
public class Survey
{
public Respondent Respondent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我看来:
@model Survey
// bla bla bla
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.Partial("_Respondent", Model.Respondent)
}
Run Code Online (Sandbox Code Playgroud)
当我发回它时,调查.Respondent = null :(
[HttpPost]
public ActionResult Survey(Survey survey)
{
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
_Respondednt局部视图的简化代码:
@model Mercer.FITT.Respondent
<fieldset>
<legend>Respondent Information</legend>
<table>
<tr>
<td>
@Html.LabelFor(model => model.Name)
</td>
<td>
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.JobTitle)
</td>
<td>
@Html.EditorFor(model => model.JobTitle)
@Html.ValidationMessageFor(model => model.JobTitle)
</td>
</tr>
</table>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
如果我摆脱局部视图并将部分视图内容复制到主视图中,一切都很好.知道为什么不从局部视图中收集数据吗?也许我应该以不同的方式调用部分视图? …
我正在使用Rails 3.0.20应用程序,我正在尝试通过部分传递局部变量,并且它显示"未定义的局部变量"我已经查看了此问题上的其他帖子并且无法修复它.
这是我要求渲染的意思
= f.fields_for :current_positions do |builder|
= render :partial => 'current_position_fields', :locals => {:f => builder, :foo => 'hi'}
Run Code Online (Sandbox Code Playgroud)
这是我的偏爱
%tr.pos_start
%td
= foo
= f.hidden_field :id, class: "pos_id"
= f.label :name, "Position Name"
%td= f.text_field :name
%tr.pos_loc
%td= f.label :location, "Position Location"
%td= f.text_field :location
%tr.pos_end
%td= f.label :year, "Position Year"
%td= f.text_field :year
%td.fields
= link_to_remove_fields "DEL", f
Run Code Online (Sandbox Code Playgroud)
错误消息是
undefined local variable or method `foo' for #<#<Class:0x00000008d4a050>:0x00000008d3c590>
Run Code Online (Sandbox Code Playgroud)
如果我= foo从代码中取出其他所有工作.
我是 MVC 3 的新手,我有一个关于正确方法的问题。
想象一下我有一个模型:
public class MyCustomModel
{
[Required]
public string UserName { get; set; }
[Required]
public DateTime? Birthdate { get; set; }
[Required]
public string City {get;set;} //To partial view
[Required]
public string Street {get;set;} //To partial view
}
Run Code Online (Sandbox Code Playgroud)
在这里我有一个观点
@Html.TextBoxFor(m => m.UserName) @Html.TextBoxFor(m => m.BirthDate) @Html.Action("LocationGroup", "Home") //这里应该渲染城市和街道
我的部分视图会有类似的东西:@Html.TextBoxFor(m => m.City) @Html.TextBoxFor(m => m.Street)
这是控制器中的操作:
[ChildActionOnly]
public ActionResult LocationGroup()
{
MyCustomModel model = new MyCustomModel (); //Should i really instantiate a new instace of the model??? …Run Code Online (Sandbox Code Playgroud) 我发现了一些与此相关的问题,但通常有许多不同的答案,它们看起来都非常混乱和复杂.
如果这是需要做的事情,那么好吧我最好坐下来解决它.
我想知道最简单和最有效的方法是从部分视图向头部添加内容.
我需要这样做的原因是我需要在每个页面上使用某些java脚本和jquery,并且它在页面之间有所不同.我不想只在_layout视图中添加它们.
在MVC4项目中,我使用部分视图,即使用ViewModel并在其上具有GET Form。在Controller动作中,我希望ViewModel对象包含一些数据。当此部分放置在普通(.cshtml)视图上时,我通过Controller操作中的预期ViewModel对象接收了数据。但是,将此部分放置在另一个部分视图上时,由于某种原因,控制器操作中的ViewModel对象为空。当我逐步完成HttpGet表单的创建时,传入的模型不是空的,但是当调用GET控制器操作时,该模型为空。
有人知道原因吗?这是我不知道的某些MVC行为吗?谢谢!
部分:
@model ViewModel
@if (Model != null)
{
using (Html.BeginForm("DoSomething", "Home", FormMethod.Get))
{
@Html.HiddenFor(m => m.Object)
<input id="btnSend" type="submit">
}
}
Run Code Online (Sandbox Code Playgroud)
其他部分:
@using OtherViewModel.ViewModel
@Html.Partial("The Partial", Model.ViewModel, ViewData)
Run Code Online (Sandbox Code Playgroud)
风景:
@Html.Partial("_TheOtherPartial", Model.OtherViewModel, new ViewDataDictionary(ViewData) {
TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "prefix" }
})
Run Code Online (Sandbox Code Playgroud)
控制器
[HttpGet]
[AllowAnonymous]
public ActionResult DoSomething(ViewModel data)
{
}
Run Code Online (Sandbox Code Playgroud) 我想列出有关存储在 MYSQL 数据库中的停车位的信息的情况。我正在使用 AJAX 调用 API 端点 (/api/spots) 并返回一个点列表。我使用刀片语法为信息布局创建了一个局部视图(partials/Spot.blade.php)。
我想知道是否有一种方法可以创建一个控制器方法,该方法将返回部分视图并将其呈现到页面的一部分,而无需返回服务器。这可以使用我的 partials/Spot.blade.php 吗?也许我应该创建一个方法将其中的所有 HTML 数据作为字符串返回,然后 get JS 将其添加到 DOM 中?
我目前的做法是在页面最初加载时渲染 partials/Spot.blade.php,并使用 CSS 将其从屏幕上移除。然后在对服务器的 AJAX 调用之后,我在这个隐藏的部分中抓取 HTML 并使用 REGEX 将数据放置在布局中。不过这看起来有点脏。只是想知道其他人是如何解决这个问题的。
您的反馈将不胜感激,
马特
我的 ruby on rails 应用程序中有一个更改头像弹出窗口。我正在尝试将它用于多种模型,例如更改个人资料图片或产品图片。
我创建了一个视图并尝试在 user.html.erb 文件中使用如下参数打开它:
<div id="myModal_change_avatar" class="modal-dialog fade-scale">
<div class="modal-content">
<div style="height: 100%;width: 100%" id="id_model_content">
<%= render partial: 'change_avatar/index', locals: { par:'param'} %>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在我的 _index.html.erb 文件中,它位于 views/change_avatar 下:
<h1><%= par %></h1>
Run Code Online (Sandbox Code Playgroud)
但是,当我打开 user.html.erb 文件时,我得到“未定义的局部变量或方法‘par’”。
我看不到我错过了什么。
有什么建议 ?
谢谢。
我不确定这里发生了什么,但以下内容会在渲染时引发错误:
<%= render 'clients/clients_table', special: true %>
Run Code Online (Sandbox Code Playgroud)
在我的部分中,我有:
<% if defined?(:special) %>
<p><%= special %></p> <!-- line with error -->
<% else %>
<p>No</p>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
这抛出错误:
undefined local variable or method `special' for #<#<Class:0x007fa20fbb0310>:0x007fa20cb986a0>
Run Code Online (Sandbox Code Playgroud)
当我尝试显示时,local_assigns.has_key?(:special)它也显示false. 知道发生了什么吗?
partial-views ×10
c# ×2
action ×1
ajax ×1
controller ×1
haml ×1
javascript ×1
laravel ×1
laravel-5.2 ×1
partial ×1
razor ×1
ruby ×1
viewmodel ×1