我创建了一个 ASP.NET MVC 项目来从列表执行 CRUD 操作,而不是使用数据库、使用HomeControllerAPI 控制器。现在我想编辑该项目,以便直接从我的视图(即 HTML 页面)调用 API 函数。
控制从视图传递到家庭控制器,然后传递到 API 控制器。我希望使用 jQuery 和 AJAX 在视图和 API 之间建立直接连接。
我应该在问题中详细说明哪些详细信息?
<script>
$(document).ready(function () {
$('#login').click(function () {
var x = $('#email1').val()
var y = $('#pswd').val()
$.ajax({
type: "GET",
url: "https://localhost:44347/api/Values/Login/" + x+y,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
window.location.replace("Studentdataproject\Studentdataproject\Views\Home\Details.cshtml");
},
error: function (data) {
alert(data.responseText);
}
});
}); }
Run Code Online (Sandbox Code Playgroud)
这是我在登录视图中调用 API 控制器登录的脚本。它没有调用 API 控制器。
登录API:
[HttpGet("Login/{email}/{password}")]
public async System.Threading.Tasks.Task<IActionResult> LoginAsync(string email, string password)
{ …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery asp.net-ajax asp.net-core-mvc asp.net-core-webapi
我有大约 30 个实体。我使用 ajax 调用使用实体框架从数据库检索数据。我们需要使用与数据库表中相同的列名。然而ajax以驼峰大小写方式获取响应和属性显示。
public Class ABC
{
public string RT_ID { get; set; }
public string START_DATE { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
JSON 响应显示 RT_ID 和 START_DATE 对应的 rtId 和 startDate 。
但是 JSON 响应显示 RT_ID 和 START_DATE,我对每个属性使用 JsonPropertyName 属性。
public Class ABC
{
[JsonPropertyName("RT_ID")]
public string RT_ID { get; set; }
[JsonPropertyName("START_DATE")]
public string START_DATE { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以挑战是,我是否可以在 JSON 响应中具有相同的属性名称,而不将 JsonPropertyName 添加到类的每个属性中。可能是班级水平?
谢谢
我有一个Web表单,有多个ListBoxes,TextBoxes,DropDowns.如果我在整个页面上放置一个UpdatePanel,我注意到页面速度较慢.这是因为,每个控件都在更新吗?如果我在每个控件周围放置不同的UpdatePanel,我注意到页面有更好的响应.是否认为这是因为我可以根据ListBoxes和DropDowns中的选择更多地控制页面的哪些部分更新?
谢谢,
X
我正在查看我正在维护的asp.net 2 Web应用程序(但没有写).
在页面加载时应该发生的一些事情不会,但有时只会发生,而且似乎是在VM中使用Firefox 3.使用了JQuery和asp.net Ajax.
应该每次都运行的重要功能(但不是)通过以下Javascript附加:
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){ Sys.Application.add_load(ImportantFunction); });
$(document).ready(function(){ Otherstuff(); });
$(document).ready(function(){ MoreStuff(); });
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
但是如果我使用firebug在ImportantFunction()中设置一个断点,它在firefox 3中的页面加载时没有被击中,但它在ajax更新中命中.
在页面中有多次调用$(document).ready,因为它们来自asp.net代码的不同部分.是的,他们都会执行.
我有两个标签:用户名和电子邮件.我使用它们来检索它们的内容并将它们作为方法参数传递.
var lblEmail = $get('<%= lblEmail.ClientID %>');
var email = lblEmail.innerText;
var lblUsername = '<%= lblUsername.ClientID %>';
var username = lblUsername.innerText;
Run Code Online (Sandbox Code Playgroud)
电子邮件标签的定义方式与用户名标签的方式相同,但最后我无法获取值,innertext返回undefined.
...
<td class="inputField">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<asp:Label ID="lblUsername" CssClass="font1" runat="server"/>
</tr>
</table>
</td>
Run Code Online (Sandbox Code Playgroud)
...
...
<td class="inputField">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<asp:Label runat="server" ID="lblEmail" CssClass="font1" />
</td>
...
Run Code Online (Sandbox Code Playgroud)
什么可能的理由来证明正在发生的事情?我怎么解决这个问题?我在页面上看到两个标签值,我将它们设置在同一个地方(当页面加载时).
我有一个与业务类交互的ASP.NET页面.我想根据用户输入的值不断更新页面上的控件,例如更新总计.计算嵌入在业务逻辑中,但它们很简单,可以在其他地方重现.我想到了三种方法来实现这个目标:
第三种方法对我来说似乎最干净,提供了良好的用户体验,并允许我直接与我在会话状态中存储的业务类进行交互.
我的问题是:这是一个好主意和/或一个普遍的做法吗?有没有更好的方法来实现这一目标?
我几年没有完成ASP.NET工作,我对autopostback有偏见[1].我已经查看了请求的大小,目前在1.5kB时可以忽略不计.该网站使用率较低,但我们可能会有少量用户使用拨号连接.
什么是使用$get('').value在ASP.NET AJAX?它是否与通常的C#get和set属性相同?
快速问题:)
我有一个ASP.NET MVC视图.我希望视图加载,然后使用ajax来加载一些辅助内容.我知道Ajax.ActionLink方法等,但我希望在加载页面时自动发布帖子.而不是基于一些用户操作.
做这个的最好方式是什么?
- 基督徒
当我在.aspx中使用包含此内容的片段时,jquery完美地工作
$(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++"
];
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
然后我在.cs文件中编写了以下代码
protected void Page_Load(object sender, EventArgs e)
{
DataClassesDataContext db = new DataClassesDataContext();
var val = from q in db.ques_tbls select q.qTitle;
db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
添加后我在.aspx脚本中更改了一行,就像这样
var availableTags = <%=val%>;
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个错误..编译器错误消息:CS0103:当前上下文中不存在名称"val"
来源错误:
Line 12: <script type="text/javascript">
Line 13: $(function () {
Line 14: var availableTags = <%=val %>;
Line 15: function split(val) {
Line 16: return val.split(/,\s*/);
Run Code Online (Sandbox Code Playgroud) 我正在开发ASP.Net MVC 3 Web应用程序.我的一个Razor Views包含一些Textbox和一个下拉列表.当用户从下拉列表中选择一个选项时,我需要一个部分视图或类似的东西,以显示在下拉列表下方,而不需要回发.
问题是,当用户从下拉列表中选择一个选项时,它并不像简单的JQuery Hide and Show for Partial View那样容易,我需要将它们的选项发送到Controller中的方法,执行一些基于此选项的逻辑,然后将一些数据返回到部分视图.
我对AJAX没有太多经验,但我觉得这是我需要使用的技术才能解决我的问题.
有没有人必须编写类似于我上面描述的任何代码?如果是这样,我需要使用AJAX吗?
此外,如果有人知道任何教程或代码snipets我可以看到帮助,这将不胜感激.
谢谢.
UPDATE
我跟着Ryan的回答,不幸的是我仍然有一些问题.我创建了以下JavaScript文件,然后在我的视图中引用
$(document).ready(function () {
$("#myDDL").change(ChangeEventOfDDL);
function ChangeEventOfDDL(){
var dropDownValue = $('#myDDL').val();
//alert(dropDownValue);
$.ajax({ type: "GET",
url: '@Url.Action("SomePartialView","testAjax")',
data: {
id: dropDownValue
},
success: function(data) {
$('#someDivToLoadContentTo').html(data);
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
视图
<select id="myDDL">
<option></option>
<option value="1">F1</option>
<option value="2">F2</option>
<option value="3">ST1</option>
<option value="4">ST2</option>
</select>
<div id="someDivToLoadContentTo">
</div>
Run Code Online (Sandbox Code Playgroud)
我的控制器看起来像这样
public class testAjaxController : Controller
{
//
// GET: /testAjax/
LocumEntities context = new LocumEntities();
public …Run Code Online (Sandbox Code Playgroud) asp.net-ajax ×10
asp.net ×4
javascript ×4
jquery ×4
ajax ×3
asp.net-mvc ×3
c# ×3
asp.net-core ×1