gpt4 book ai didi

c# - 如何在 asp.net mvc 3 中不使用 ajax 的情况下在某些特定的 div 中呈现局部 View ?

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:40 27 4
gpt4 key购买 nike

如何在 asp.net mvc 3 中不使用 ajax 在某些特定的 div 中呈现部分 View ???

例如我有一个模型:

public class TestViewModel
{
public string FullText
{
get
{
retrun "Full text";
}
}
public string ShortText
{
get
{
return "Short text";
}
}
}

主视图:

@model TestViewModel
...
<div id="RenderHere">

</div>
@Html.ActionLink("Show short text");
@Html.ActionLink("Show full text");
...

和拖曳局部 View :

ShortTextParial

@model TestViewModel
@Html.LabelFor(m => m.ShortText);
@Model.ShortText;

和全文部分

@model TestViewModel
@Html.LabelFor(m => m.FullText);
@Model.FullText;

如何在不使用 ajax 的情况下在按下“显示短文本”操作链接后在“RenderHere”div 中呈现 ShortTextPartial???我已经找到了这样的解决方案,但它们不适合我。

附言我不想使用 Ajax,因为如果在客户端禁用 Java 脚本,页面将无法正常工作。

最佳答案

首先我不得不说我不认为你的设计是最好的。请注意,大部分逻辑、比较和条件应该发生在您的模型和业务逻辑层中,而不是在 View 和 Controller 中。

无论如何,如果您不想使用 AJAX,您应该使用 URL 参数或 session 状态在页面之间传递数据。话虽如此,我是通过URL参数开发的。

(我的开发环境是VS2010 SP1,ASP.NET 4,MVC 3)

首先我们需要像这样更改 TextViewModel:

public class TextViewModel
{
public string FullText { get { return "Full text"; } }
public string ShortText { get { return "Short text"; } }

public string ViewMode { get; private set; }

public TextViewModel(string viewMode)
{
if (!string.IsNullOrWhiteSpace(viewMode))
this.ViewMode = viewMode.Trim().ToLower();
}
}

现在对 Controller 做一点调整:

public class HomeController : Controller
{
public ActionResult Index(string id)
{
Models.TextViewModel model = new Models.TextViewModel(id);
return View(model);
}
}

最后是我们的观点:

@model MvcApplication1.Models.TextViewModel
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<div id="RenderHere">
@if (Model.ViewMode == "short")
{
@Html.Partial("ShortTextParial", Model)
}
@if (Model.ViewMode == "full")
{
@Html.Partial("FullTextPartial", Model)
}
</div>
@Html.ActionLink("Show short text", "Index", new { id = "short" })
@Html.ActionLink("Show full text", "Index", new { id = "full" })

该应用程序在我的电脑上运行良好。如果您需要,我已经在此处上传了代码:http://goo.gl/9v2Ny

我想再说一次,你可以想出一个更好的设计,它不需要 View 甚至 Controller 中的任何 @if

关于c# - 如何在 asp.net mvc 3 中不使用 ajax 的情况下在某些特定的 div 中呈现局部 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com