我正在尝试在VB.NET MVC3项目中使用MVC Scaffolding并遇到一个问题,后期绑定与Option Strict设置(我想要它).
这适用于C#:
public ActionResult Create()
{
ViewBag.PossibleTeams = context.Teams;
return View();
}
Run Code Online (Sandbox Code Playgroud)
但VB.NET中的代码几乎相同:
Public Function Create() As ActionResult
ViewBag.PossibleTeams = context.Teams
Return View()
End Function
Run Code Online (Sandbox Code Playgroud)
导致编译器错误Option Strict On禁止后期绑定.我看了一下这里的文档:http://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.viewbag(VS.98).aspx但它不是很有帮助.
我注意到,在C#中的新的空应用程序使用ViewBag的HomeController,但VB.NET版本使用ViewData,所以也许这是一个VB.NET的限制.
我有一个ASP.NET MVC项目,我想在文章中发布一篇文章然后在页面上显示该文章的片段.当用户注释时,我还想在保存到数据库后显示注释.我在这两种情况下使用AJAX和调用OnFailure和OnSuccess方法.
OnFailure保存帖子而不是注释时,该方法仅会启动(这是因为即使成功保存,页面也不会更新).OnSuccess根本没有调用该方法,因为我的页面没有更新.
我正在使用jquery 2.1.4并在我的项目中加载了jquery.unobtrusive-ajax脚本
这是我的代码.
//查看用于创建帖子
@using (Ajax.BeginForm("Create", "Post",
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "insertnewpostbelow",
InsertionMode = InsertionMode.InsertAfter,
OnSuccess = "postingSucceeded()",
OnFailure = "postingFailed()"
}))
{
//View code left out
}
Run Code Online (Sandbox Code Playgroud)
//服务器端用于保存帖子和更新 PartialView
[HttpPost, ValidateAntiForgeryToken, ValidateInput(false)]
public async Task<PartialViewResult> Create
([Bind(Include = "ID,Title,Message,PostedOn,isAbuse,By")] Post post)
{
if (ModelState.IsValid)
{
var list = new List<Post>();
list.Add(post);
try
{
db.Posts.Add(post);
await db.SaveChangesAsync();
return PartialView("_Posts", list);
}
catch …Run Code Online (Sandbox Code Playgroud) 首先,我需要说我在Asp.net上的经验非常小,这就是为什么这个问题在某些方面会引起混淆的原因.我首先创建了https://code.visualstudio.com/Docs/ASPnet5 MVC6项目yo aspnet.然后我将这一行添加到project.json中的"dependencies"
"Microsoft.Framework.ConfigurationModel.Xml": "1.0.0-beta4",
"System.Web.NHaml.Mvc3": "4.0.8",
Run Code Online (Sandbox Code Playgroud)
然后我用这个Google代码内容创建了haml.xml,并在Startup.cs文件中扩展了以下行:
var configuration = new Configuration()
.AddJsonFile("config.json")
.AddXmlFile("haml.xml")
.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true);
Run Code Online (Sandbox Code Playgroud)
这是我的控制器的样子:
public class HomeController : Controller
{
public IActionResult Index()
{
return View(@"~/Views/Shared/Test.haml");
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序启动,但我无法呈现操作,这是浏览器中显示的错误
处理请求时发生未处理的异常.
InvalidOperationException:找不到视图'〜/ Views/Shared/Test.haml'.搜索了以下位置:〜/ Views/Shared/Test.haml.Microsoft.AspNet.Mvc.Rendering.ViewEngineResult.EnsureSuccessful()[0x00000] in,第0行
但是此文件确实存在于此目录中.任何提示或帮助表示赞赏.
基本上我想要的是一个非常简单的MVC 5或6项目的详细解释或工作示例,它使用NHaml或任何其他提供Haml语法的lib(如果它与osx上的Mono一起工作,这是一个奖励).坦克很多!
www.example1.comapi.example2.com我想限制对WebApi的访问.我试图实施防伪令牌:
当我使用Anti-forgery令牌向WebApi创建GET请求时,我得到一个异常,因为请求不包含此令牌.
在方法中调用ValidateRequestHeader是变量cookie = null.
如何修复以下代码?这是正确的解决方案?
MVC项目(前端) - 用于开发localhost:33635:
Index.cshtml
<div class="container">
<div class="row">
<div class="col-md-12">
<input id="get-request-button" type="button" class="btn btn-info" value="Create request to API Server" />
<br />
<div id="result"></div>
</div>
</div>
</div>
@section scripts
{
<script type="text/javascript">
@functions{
public string TokenHeaderValue()
{
string cookieToken, formToken;
AntiForgery.GetTokens(null, out cookieToken, out formToken);
return cookieToken + ":" + formToken;
}
}
$(function () {
$("#get-request-button").click(function () {
$.ajax("http://localhost:33887/api/values", {
type: "GET", …Run Code Online (Sandbox Code Playgroud) 我是ASP.NET MVC的新手,如果这比它看起来更容易,那么道歉.我一直在谷歌搜索,我有一个这样的课:
public class Search : IAuditable
{
[Key]
public int SearchID { get; set; }
public int UserID { get; set; }
...
public ICollection<SearchTerm> SearchTerms { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在Create.cshtml中,我有以下内容
<div class="editor-label">
@Html.LabelFor(model => model.Search.SearchTerms)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Search.SearchTerms, "SearchTerm")
@Html.ValidationMessageFor(model => model.Search.SearchTerms)
</div>
Run Code Online (Sandbox Code Playgroud)
SearchTerm EditorTemplate是一个简单的表单,如下所示:
@model Core.Search.Parameters.SearchTerm
@Html.HiddenFor(n => n.SearchTermID)
<div class="editor-label">
@Html.LabelFor(n => n.Text, "Term")
</div>
<div class="editor-field">
@Html.EditorFor(n => n.Text)
@Html.ValidationMessageFor(n => n.Text)
</div>
Run Code Online (Sandbox Code Playgroud)
它似乎工作,我在创建时看到一个文本框(默认模型为空时).不过,我想要做的是能够添加/删除SearchTerms与 …
我们有一个包含多种形式的页面.每个都有自己的@Html.AntiForgeryToken().在我的本地机器上一切都很棒.
我们部署到Azure(PAAS),但__RequestVerificationToken 没有在每个请求上创建.有时它在那里,有时我得到所需的防伪cookie不存在,很少我得到令牌不匹配错误.
在这一点上我完全无能为力.我无法弄清楚我们的代码或Azure环境是否有问题?这些形式没有ajax.
我们已将该<machineKey>部分添加到我们的web.config中.没有缓存.有时它从第一次出现在新设备上.
这个javascript会产生错误:
在参数列表后丢失)
在萤火虫的代码:
<script type=\"text/javascript\">
function add( answer )
{
$.post('../page.php?cmd=view&id=3523',
{user_id: 3523, other_user_id: 2343}, function(d)
$(answer).after(\"<span>Done!</span>\").remove();
});
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在创建一个页面,在没有页面刷新的情况下制作多个AJAX表单帖子.
我想使用ASP.NET MVC HTML.AntiForgeryToken()帮助程序来保护表单免受CSRF攻击.我认为页面上的每个表单都可以共享相同的令牌,但它是否允许使用相同令牌的多个请求?如果没有办法获得新令牌或其他方式来保护表格?
最近我遇到了一个奇怪的问题:视觉工作室不时忽略我在.css中所做的更改.只有当我用另一个重新创建.css时!名称更改变得可见.当我清除解决方案并删除.css时,视觉效果仍然呈现!删除.css.有任何相同的问题,或者只是我的错误?
就像几天过去了一样,当我试图回忆我读到的内容时,line-height会误导我所看到的内容
<span>Color me</span>
span {
line-height: 52px;
background: red;
font-size: 14px;
}
Run Code Online (Sandbox Code Playgroud)
为什么它不着色完整的框(即完整line-height)?
但是当我div根据需要对它的颜色做同样的事情时。
<div>Color me</div>
div {
line-height: 52px;
background: red;
font-size: 14px;
}
Run Code Online (Sandbox Code Playgroud)