我正在设置一个功能,用于根据选择下拉菜单中的选择发送特定的电子邮件。根据选择,需要发送特定的邮件。邮件是从充当处理程序的局部视图发送的。
页面加载时,将渲染每个局部视图,并且所有邮件都将被发送,我不明白为什么这不起作用。
这是在umbraco中制作的,而局部文件是在后台制作的,因此没有要渲染的控制器。而且我已经尝试过switch和if语句,但实际上无法使其按我想要的方式工作。
//My attempt at the function for the rendering of partials
function SendMail(){
var select = document.getElementById("foo");
var selected = select.options[select.selectedIndex].value;
if (selected == 1) {
$.ajax({ url: @Html.Partial("Web/Partial1", @Model.boo) })
}
if(selected == 2){
$.ajax({ url: @Html.Partial("Web/Partial2", @Model.boo)})
}
//switch (selected) {
// case '0':
// alert(selected);
// break;
// case '1':
// alert(selected);
// $.ajax({ url: Html.Partial("Web/Partial1", Model.boo)})
// break;
// case '2':
// alert(selected);
// $.ajax({ url: Html.Partial("Web/Partial2", Model.boo)})
//
//这是我选择的html。
<select id="foo" onchange="SendMail()">
<option value="0" selected="selected">Vælg en type</option>
<option value="1">Ordrebekræftigelse</option>
<option value="2">Betalingsmail</option>
</select>
答案 0 :(得分:0)
您可以使用Ajax.BeginForm
。在表格中设置Html.DropdownListFor()
或DropDownList()
及其参数,然后调用onchange($(this).closest('form').submit())
示例select.cshtml:
@using (Ajax.BeginForm(
"_PartialMailChanger",
"Manage",
new AjaxOptions
{
// GET or POST (I assume GET in your case)
HttpMethod = "GET",
UpdateTargetId = "changeMailContainer",
InsertionMode = InsertionMode.Replace
},
new { id = "formChangeMailPartial" }))
{
@Html.DropDownList("MailChangeDropdown", YOUR_LIST_OF_SELECTITEMS, new
{
onchange = @"$(this).closest('form').submit()"
})
}
答案 1 :(得分:0)
实际上是Html附近的语法错误。部分,它不接受Html.Partial(“ Web / Partial1”,Model.boo)作为URL。(通过删除自己查看,不会出现错误SendMail未定义)
所以我建议在控制器中创建一个方法
public ActionResult CallPartial(int selected){
/// you can use switch case also
if(selected== 1)
return PartialView("yourpartial1",YourModel);
if(selected == 2)
return PartialView("yourpartial2",YourModel);
}
并在ajax响应中,将部分视图附加到所需的div
function SendMail(){
var select = document.getElementById("foo");
var selected = select.options[select.selectedIndex].value;
$.get( "YourControllerName/CallPartial",{selected : selected }, function(
data ) {
$( ".result" ).html( data );
});
}
<div class='result'></div>