我有一个名为"show"的控制器的视图.在该视图中,我想呈现另一个控制器视图的内容 - 显然,该视图上的表单逻辑与它所属的控制器进行通信.我该怎么做呢?我对rails非常陌生,我对该框架没有100%的信心.
您几乎可以在视图中将它们视为"小部件".我知道您可以使用以下方法在视图上从同一个控制器渲染操作:
render :action => "show_home_page", :layout=> false
Run Code Online (Sandbox Code Playgroud)
但我需要它来从另一个控制器渲染动作(视图).
即.
我有一个视图,它被渲染到一个布局上.该视图属于控制器A.我需要在原始视图中从控制器B渲染"索引"和"新"视图(上图)
.
所以我有一个布局页面
<head>
@RenderSection("HeaderLast", required: false)
</head>
Run Code Online (Sandbox Code Playgroud)
一个看法
@section HeaderLast
{
<script src="@Url.Content("~/Scripts/knockout-1.2.0.js")"
type="text/javascript"></script>
}
<div id="profile-tab">
@{ Html.RenderPartial("_userProfile"); }
</div>
Run Code Online (Sandbox Code Playgroud)
和部分观点
@section HeaderLast
{
<script type="text/javascript">
alert('test');
</script>
}
<div......
Run Code Online (Sandbox Code Playgroud)
我认为这不可能那么简单.有没有一种正确的方法来开箱即用,或者这总是需要某种调解器并传递ViewData周围的东西来手动使内容冒泡到布局页面?
赏金开始了:赏金将奖励为此短期提供的最佳解决方案.如果没有提供答案,我会将其授予@SLaks最初回答此问题.
我在我的应用程序中使用Chromatron主题作为管理面板.有一个侧边栏小工具有HTML内容和一些CSS技巧,它可以显示完全不同.
<section class="sidebar nested">
<h2>Nested Section</h2>
<p>Lorem ipsum dolor sit amet, conse ctetur adipiscing elit. Maec enas id augue ac metu aliquam.</p>
<p>Sed pharetra placerat est suscipit sagittis. Phasellus <a href="#">aliquam</a> males uada blandit. Donec adipiscing sem erat.</p>
</section>
Run Code Online (Sandbox Code Playgroud)
我希望有一个像这样使用的部分视图:
@Html.Partial("Path/To/Partial/View"){
<h2>Nested Section</h2>
<p>Lorem ipsum dolor sit amet, conse ctetur adipiscing elit. Maec enas id augue ac metu aliquam.</p>
<p>Sed pharetra placerat est suscipit sagittis. Phasellus <a href="#">aliquam</a> males uada blandit. Donec adipiscing sem erat.</p>
}
Run Code Online (Sandbox Code Playgroud)
TBH,我想拥有像@for(...){ }块一样的功能.这是剃刀的可能吗?
我有一个局部视图,我试图从父视图中获取值.这就是我想要的:
@Html.Partial("Shared", "Home", new ViewDataDictionary { { "9595959", "8sd8sds8das8d" } })
Run Code Online (Sandbox Code Playgroud)
这是部分观点:
<!-- Google Code for apply Conversion Page --> <script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = "viewdata-number1";
var google_conversion_language = "en";
var google_conversion_format = "2";
var google_conversion_color = "ffffff";
var google_conversion_label = "viewdata-number2"; var google_conversion_value = 0;
/* ]]> */
</script>
<script type="text/javascript"
src="https://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt=""
src="https://www.googleadservices.com/pagead/conversion/viewdata-number1/?value=0&label=viewdata-number2&guid=ON&script=0"/>
</div>
</noscript>
Run Code Online (Sandbox Code Playgroud)
是否有可能立即获得价值?我没有为部分视图分配任何模型或控制器.先谢谢,Laziale
更新的代码:
@{
var variable = ViewData["First"];
<!-- Google Code for apply …Run Code Online (Sandbox Code Playgroud) 我的MVC控制器中有以下代码:
[HttpPost]
public PartialViewResult GetPartialDiv(int id /* drop down value */)
{
PartyInvites.Models.GuestResponse guestResponse = new PartyInvites.Models.GuestResponse();
guestResponse.Name = "this was generated from this ddl id:";
return PartialView("MyPartialView", guestResponse);
}
Run Code Online (Sandbox Code Playgroud)
然后在我的视图顶部的javascript中:
$(document).ready(function () {
$(".SelectedCustomer").change( function (event) {
$.ajax({
url: "@Url.Action("GetPartialDiv/")" + $(this).val(),
data: { id : $(this).val() /* add other additional parameters */ },
cache: false,
type: "POST",
dataType: "html",
success: function (data, textStatus, XMLHttpRequest) {
SetData(data);
}
});
});
function SetData(data)
{
$("#divPartialView").html( data ); // HTML DOM …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉MVC应用程序中部分视图和用户控件之间的确切区别是什么?哪一个可行使用?我正在使用用户控件来填充我的视图,这些视图有一个或多个选项卡(我已使用Ajax控件工具包添加).我想知道使用部分视图和用户控件时的优缺点.
谢谢,Kaps
我有一个部分,我在不同的页面使用.我想根据呈现它的视图有条件地隐藏部分内部的某个div.
我正在考虑创建一个页面特定的javascript文件,它将查找div并隐藏它.
但是,如果有一种方法来检索部分内部的视图名称/页面名称,它将是部分的中心,并且不需要在多个页面中加载相同的javascript文件.
有没有人知道在局部内部做这件事的方法
我的应用程序有问题,生病尝试通过示例解释,我有一个表单,这个表单存在几个文本框和下拉列表.为了可重用性,我将3个下拉列表合并到一个局部视图中,这个部分视图我加载了@ Html.Action,这个工作正常,当我启动表单时,我看到一切都显示为应该是,虽然我不知道为什么但是那些需要直接下拉列表以红色开始显示,并表示它是必填字段.
但是当我填写所有内容时,我从下拉列表中选择值,然后单击"确定",下拉列表中的值为NULL.
我认为使用代码示例会更容易理解:
主要型号:
public class FormModel
{
[Required]
public string UserName { get; set; }
[Required]
[Display(Name = "Birthdate")]
public DateTime? Birthdate { get; set; }
//This is what i'm talking about, that is not being set, the location
public Location Location { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是位置类,然后传递给局部视图,通常我认为应该设置,它看起来像这样:
public class Location
{
[Required]
[Display(Name = "Country")]
public string CountryId { get; set; }
[Required]
[Display(Name = "Region")]
public string RegionId { get; set; }
[Required]
[Display(Name = "City")] …Run Code Online (Sandbox Code Playgroud) \\code
public ActionResult mapPartial(DataTable dt)
{
string strEvents = "[";
foreach (DataRow row in dt.Rows)
{
strEvents += "[" + row["Lat"].ToString() + ", " + row["Long"].ToString() + ", " + "\"" +
row["LastName"].ToString() + row["DateOfBirth"].ToString() + "\"" + "],";
}
strEvents = strEvents.Remove(strEvents.LastIndexOf(","));
strEvents += "]";
ViewBag.locpoints = strEvents;
return PartialView(dt);
}
//in the partial view page
<script type="text/javascript">
function mapInit(Viewbag.locpoints) {
var arr = $.parseJSON(Viewbag.locpoints);
//more code which assigns a map to div map below
}
</script>
<div id="map" …Run Code Online (Sandbox Code Playgroud) 我正在为MVC创建一个动态菜单系统,只是为了使它工作,我创建了一个菜单的局部视图,它使用下面的语法很好用:
@Html.RenderPartial("_Menu", (Models.Menu)ViewBag.MainMenu)
Run Code Online (Sandbox Code Playgroud)
但是,为此,我必须在每个Controller和每个操作的ViewBag中设置MainMenu和FooterMenu(或任何其他菜单).为了避免这种情况,我想知道是否有推荐的事件可以全局访问ViewBag.如果没有,有人建议将Menu对象传递给会话变量吗?这对我来说听起来不对,但我现在才想到的事情.
更新:
_Layout.cshtml - 我包含对Action的新调用:
@Html.Action("RenderMenu", "SharedController", new { name = "Main" })
Run Code Online (Sandbox Code Playgroud)
SharedController.cs - 添加了新动作:
public ActionResult RenderMenu(string name)
{
if (db.Menus.Count<Menu>() > 0 && db.MenuItems.Count<MenuItem>() > 0)
{
Menu menu = db.Menus.Include("MenuItems").Single<Menu>(m => m.Name == name);
return PartialView("_MenuLayout", menu);
}
else
{
return PartialView("_MenuLayout", null);
}
}
Run Code Online (Sandbox Code Playgroud)
它抛出以下异常:
未找到路径'/'的控制器或未实现IController.
更新2:
所以,问题是我用全名引用了Controller,你只需要控制器的名称减去"Controller".整洁的花絮.所以,对于我的例子,这有效:
@Html.Action("RenderMenu", "Shared", new { name = "Main" })
Run Code Online (Sandbox Code Playgroud) partial-views ×10
asp.net-mvc ×5
razor ×3
ajax ×1
c# ×1
controllers ×1
data-binding ×1
javascript ×1
jquery ×1
layout-page ×1
menu ×1
model ×1