所以我想做的事情几乎与您在这里找到的一样: http ://www.makeitspendit.com/calling-asp-mvc-controllers-from-jquery-ajax/
它会完全按照我想要的方式执行,但是为所有 4 个按钮编写相同的脚本并不是很干燥。(嗯,一点也不干)
我想要一个脚本来根据按钮的 ID 调用正确的视图,这样代码只需在我的页面上出现一次。我尝试将 this.id 传递到函数调用中,并在 ajax 调用的“url:”属性中使用串联,但这不起作用。
例子:
<div id="projectDiv">
<button onclick="loadProject(this.id)" id="_Project1">Project 1</button>
<button onclick="loadProject(this.id)" id="_Project2">Project 2</button>
<script>
function loadProject(projectID) {
$.ajax({
url: ("/Projects/Project/"+projectID),
datatype: "text",
type: "POST",
success: function (data) {
$('#projectDiv').html(data);
},
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
在控制器中:
[HttpPost]
public ActionResult Project(string id)
{
return View(id);
}
Run Code Online (Sandbox Code Playgroud)
我已经对此进行了全面搜索,发现了类似的东西(但不够相似,不足以得出我需要的东西),但找不到这种情况——我认为这种情况很常见,足以提供更多信息。
示例代码说明了我希望它如何工作,但我似乎无法像那样将变量传递到 url 属性中。虽然我确实对 ASP.NET MVC 很陌生,但这似乎应该是非常基本的,但我已经在这个问题上停留了一分钟。
我正在使用 asp.net 核心 2.1。
我的主页在 Pages 文件夹下,我的部分视图 _test2 位于共享文件夹中。这是我的主页:
public class MainModel : PageModel
{
public IRepositoryStudent irep;
public MainModel (IRepositoryStudent _irep){
irep = _irep;
}
[BindProperty]
public Student student{ get; set; }
public void OnGet()
{
student = irep.GetFirst();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 Main.cshtml:
@page
@model APWeb.Pages.MainModel
<h2>Main</h2>
<partial name="_test2" model="Model.student" />
Run Code Online (Sandbox Code Playgroud)
这是我的部分观点:_test2:
@page
@*
For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@
@model Student
@{
<h1 >@Model.Name</h1>}
Run Code Online (Sandbox Code Playgroud)
我在局部视图中的模型为空,并且出现此错误:
NullReferenceException: Object reference not set to an …Run Code Online (Sandbox Code Playgroud) partial-views asp.net-mvc-partialview asp.net-core razor-pages asp.net-core-2.1
我有一个简单的标注部分,我想以这种方式实现或非常接近它。
<partial name="_Callout" model='"Aviso:Todos..."' />
Run Code Online (Sandbox Code Playgroud)
在部分视图中,我有这个简单的代码(稍后会变得更复杂)
<div class="callout callout-info"><strong>Aviso</strong>Todos...</div>
Run Code Online (Sandbox Code Playgroud)
我想在部分中我将分割字符串并将 s[0] 放入 Strong 中,将 s[1] 放入 div 中。
必须有一种简单的方法来传递字符串,可能可以执行 new string[] {"",""} 但不确定这是将数据传递到部分视图的正确方法。
我可以显示所有客户的列表,我可以显示所有订单的列表,我想进一步.
我想在同一页面上呈现两个部分视图,以显示与该客户相关的客户详细信息和订单.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage< MyDemo.Models.CustomerAndOrdersViewModel >" %>
<% Html.RenderPartial("CustomerDetails", this.ViewData.Model.Customer); %>
<% Html.RenderPartial("CustomerOrders", this.ViewData.Model.Order); %>
Run Code Online (Sandbox Code Playgroud)
我创建了一个viewmodel
public class CustomerAndOrdersViewModel
{
public CustomerAndOrdersViewModel(Customer customer,
IEnumerable<Order> orders)
{
this.Customer = customer;
this.Order = orders;
}
public Customer Customer { get; set; }
public IEnumerable<Order> Order { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的客户控制器中我定义了
ICustomerRepository customerRepository;
IOrderRepository orderRepository;
public CustomersController()
: this(new CustomerRepository())
{
}
public CustomersController(ICustomerRepository repository)
{
customerRepository = repository;
}
public CustomersController(IOrderRepository repository)
{
orderRepository = repository;
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试将这些局部参数传递给部分形式,并将它们传递给hidden_fields。我无法将值直接放入表单,因为它们会发生变化。任何帮助将不胜感激。
我有:
<% form_for :user, @user, :url => { :action => "create", :controller => "users"} do |f| %>
<%= f.error_messages %>
<%= render :partial => "form", :locals => { :f => f, :position => 'Company Commander', :battalion_id => @battalion.id, :company_id => c.id} %>
<%= f.submit "Register" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
_form.html
<%= f.hidden_field (:position, :value => :position) %>
<%= f.hidden_field (:battalion_id, :value => @battalion.id) %>
<%= f.hidden_field (:battalion_id, :value => @company.id) %>
<%= f.hidden_field (:roles, :value => "Company") %>
<%= …Run Code Online (Sandbox Code Playgroud) 我想使用相同的局部视图来显示记录和编辑记录.两个函数的布局都是相同的,它看起来比拥有EditRecord局部视图和DisplayRecord局部视图要清晰得多.如果我只有一个部分视图要更新,维护将更容易.
我现在正在使用它并且它有效:
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@if (@ViewBag.ViewMode == "display")
{
@Html.DisplayFor(model => model.FirstName)
}
else
{
@Html.EditorFor(model => model.FirstName)
}
@Html.ValidationMessageFor(model => model.FirstName)
</div>
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
谢谢.
我正在研究ASP.NET MVC3.我有一个局部视图RestaurantAdminNavigation.ascx,我从Views/Restaurant文件Views/Shared夹移动到文件夹.
我在该视图中有一个操作链接
<%:Html.ActionLink("Edit", "Edit", "Restaurant", new { id=Model.OId }) %>
当它在Views/Restaurant文件夹时工作正常,但在文件夹移动后Views/Shared,如果我将参数作为该操作链接的一部分,它会显示错误"无法解决操作编辑".但如果我保持
<%:Html.ActionLink("Edit", "Edit", "Restaurant") %>
它没有告诉我错误.
谷歌搜索后,我明白原因可能是注册路线.我需要在Global.ascx文件中注册路由,但如果这是解决方案,我无法理解我应该编码什么.
我有3个模型共享这种类似的形式来提交投票.这个表单包含在每个模型中显示页面,所以我想把这个代码放到一个部分来清理一切.
问题/ show.html.erb
<div class="vote">
<div id="questions">
<h1><%= @question.votes_count %></h1>
</div>
<%= link_to "up", vote_question_path(@question, value: 1), remote: true, method: "post" %>
<%= link_to "down", vote_question_path(@question, value: -1),remote: true, method: "post" %>
</div>
Run Code Online (Sandbox Code Playgroud)
我已经尝试将此代码移动到部分代码,如下面的代码:
表决/ _form.html.erb
<div class="vote">
<div id="votes_count">
Votes: <%= object.votes_count %>
</div>
<%= link_to "up", vote_path(object, value: 1),remote: true, method: "post" %>
<%= link_to "down", vote_path(answer, value: -1), remote: true, method: "post" %>
</div>
Run Code Online (Sandbox Code Playgroud)
我使用以下调用替换显示页面中的先前代码以呈现部分:
<%= render partial: "votes/form", locals: {object: @question, vote_path: answer_question_path } %>
Run Code Online (Sandbox Code Playgroud)
但是,通过尝试各种字符串方法以及send(path)方法将vote_question_path传递给partial它总是出错 …
我是MVC设计范例的新手,我正在制作我的第一个MVC应用程序,其中有一个满是员工的网格,一旦你点击网格上的每个员工,它就会在下面的Tab控件中加载有关员工的更多细节.
标签控件有三个标签,每个标签代表员工信息的不同方面.
现在,我有一个不同的List模型,它转到Grid,然后为选项卡控件中的每个选项卡分离模型/部分View组合.
我之所以选择这种设计有几个原因:
我认为这很干净,我喜欢它.但是,我不太确定我对最佳MVC设计实践有多远或多少一致.这是一个糟糕的设计或它只是一个偏好的问题.这样做有什么缺点吗?
嘿所有我想找到一种方法(或者如果可能的话)来调用这段代码:
<nav>
<ul class="nav navbar-nav">
@if (Session["chosenAMT"] is bool == true)
{
@Html.Partial("_Menu")
}
</ul>
</nav>
Run Code Online (Sandbox Code Playgroud)
当它启动页面时,selectedAMT的值为false,因此导航不会在_Layout.cshtml页面上加载.
但是,一旦用户从下拉列表中选择一个值,我需要启用该部分视图,以便它现在可以向用户显示导航.
当用户从下拉列表中选择一个值时,我将POST调用到HomeController.cs:
$.ajax({
type: 'POST',
url: 'Home/showNav',
cache: false,
dataType: 'json',
data: {},
success: function (response) {
console.log('worked');
},
error: function (response) {
console.log(response);
}
});
Run Code Online (Sandbox Code Playgroud)
这是HomeController.cs中的showNav代码:
[HttpPost]
public string showNav()
{
Dictionary<string, string> resultsBack = new Dictionary<string, string>();
Session["chosenAMT"] = true;
resultsBack.Add("dback", "GOOD");
resultsBack.Add("dhead", "worked");
resultsBack.Add("dinfo", …Run Code Online (Sandbox Code Playgroud) partial-views ×10
asp.net-mvc ×6
c# ×4
asp.net ×2
asp.net-core ×2
razor-pages ×2
.net ×1
ajax ×1
parameters ×1
path ×1
razor ×1
ruby ×1