在 Blazor 中,我有一个<a>
同时具有 ahref
和onclick
方法的元素:
<a href="" onclick="@(() => ChangePage(_someObject))">Test</a>
Run Code Online (Sandbox Code Playgroud)
onclick
调用这个方法:
private bool ChangePage(object objectToDisplay)
{
_currentObject = objectToDisplay;
StateHasChanged();
return false;
}
Run Code Online (Sandbox Code Playgroud)
通常在 JavaScript 中,从 event 方法返回 false 会停止后续导航到 中的链接,href
但这似乎不适用于我上面的代码。
单击链接后,如何阻止 Blazor 将页面更改为根 url?
(这里显而易见的答案是href
完全删除,但我正在使用引导 Pill 中的链接并删除 Pillhref
工作的停止)
<a>
元素更改为跨度并设置data-target
属性,但这会正确停止 Pills 渲染。return
到onclick
事件中(根据此答案):onclick="return @(() => ChangePage(_overviewModel))"
但这不会编译。return
在onclick
事件之后添加:onclick="@(() => ChangePage(_overviewModel)); …
我有一个链接加载页面并在点击时调用javascript函数.问题是在页面重定向之前javascript函数无法完成.反正有没有确保它呢?
您会注意到alert()
javascript函数中有一个被注释掉的内容,如果我取消注释它,该函数就能完成.但是,我显然不希望实际发生警报弹出窗口.
链接在这里 :
<a href="p.php?p=$randString&s=$postCat" onclick="setYSession();">
Run Code Online (Sandbox Code Playgroud)
这是无法及时完成的javascript函数:
function setYSession() {
var YposValue = window.pageYOffset;
$.get('yPosSession.php?yValue=' + YposValue);
//alert(YposValue);
return false;
}
Run Code Online (Sandbox Code Playgroud) 要在不重新加载页面的情况下修改 URL,我们可以使用:
window.history.pushState('page2', 'Title', '/page2.php');
Run Code Online (Sandbox Code Playgroud)
但如果我用<a>
element试试:
<a onClick='my_function()' href='/page2.php'> Click Here </a>
<script>
function my_fnuction(){
window.history.pushState('page2', 'Title', '/page2.php');
}
</script>
Run Code Online (Sandbox Code Playgroud)
它不起作用,那么我怎样才能使用<a>
element 和window.history.pushState()
一起呢?像twitter和Facebook一样,用户可以点击右键在新窗口中打开网址,直接点击获取页面和更改网址,无需重新加载
我们的<a>
标签通过为onClick
房产提供功能,在我们的应用程序中打开自定义pdf查看器.
我们希望提供可访问性的href,因此用户可以右键单击 - >在新选项卡中打开,控制+单击或他们想要的其他内容.
但是,当用户单击<a>
标记时,我们不希望实际打开链接,而是我们的onClick
函数应该处理该事件.
目前我们有这样的事情:
render(){
return (<a href="www.stackoverflow.com" onClick={(e)=>this.linkClick(e)} >click here</a>)
}
linkClick(e) {
e.stopPropagation(); // does not stop the link from opening
console.log("link clicked");
return false; // does not stop the link from opening
}
Run Code Online (Sandbox Code Playgroud)
在普通的js中,这可以通过在onClick函数上返回false来完成.我们也试过添加stopPropagation()
无济于事.一些反应用户添加href="javascript: void(0)"
,但这确实禁用了链接,它不符合我们的可访问性需求.
我的模态插入数据时遇到问题.每次我添加一个新行时,它都会在数据库中输入第二行.我真的不知道我做错了什么,所以如果你有一个关于如何解决这个问题的想法,请帮助我.
这是我的控制器:
public ActionResult IndexEvent()
{
return View(db.tbl_Event.ToList());
}
[HttpGet]
public ActionResult AddEvent()
{
return PartialView();
}
[HttpPost]
public ActionResult AddEvent(BOL3.tbl_Event eve)
{
if(ModelState.IsValid)
{
db.tbl_Event.Add(eve);
db.SaveChanges();
}
return PartialView("_Detail", db.tbl_Event.ToList());
}
Run Code Online (Sandbox Code Playgroud)
,这是我的索引视图,_Detail局部视图和添加局部视图(按相同顺序):
@model IEnumerable<BOL3.tbl_Event>
@{
ViewBag.Title = "Index";
}
<link href="@Url.Content("~/Content/bootstrap/css/bootstrap.min.css")" rel="stylesheet" />
<link href="@Url.Content("~/Content/bootstrap/css/bootstrap-theme.min.cs")" rel="stylesheet" />
<link href="@Url.Content("~/Content/bootstrap/css/font-awesome.min.cs")" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>
<div id="main-div">
<div class="clearfix"> </div>
<div class="clearfix"> </div>
<div class="container">
<a href="@Url.Action("AddEvent", "Prog")" id="Add" class="btn btn-primary btn btn-xs"><i class="glyphicon glyphicon-plus"></i> Add New</a>
<br /> …
Run Code Online (Sandbox Code Playgroud)