Ajax Post ile Model’ i ActionResult’a Gönderme

Eğer MVC’ de sayfa içerisinden model’ i ActionResult’ a Ajax Post ile göndermek istiyorsanız aşağıdaki kod işinizi görecektir.

data: $("#frmContactUs").serialize()
$(document).ready(function () {
    $('#btnSendMessage').click(function () {
        $.ajax({
            type: 'POST',
            url: '/Customer/ContactUs/',
            data: $('#frmContactUs').serialize(),
            success: function (data) {
                $('#dvResult').html(data.Result);
            },
            error: function (data) {
                $('#dvResult').html(data.Result);
            }
        });
    });
});
[HttpPost]
public ActionResult ContactUs(ContactUsModel model) {
   if (ModelState.IsValid) {
      ///...
      return Json(new { Success = true, Result = "Mesajınız Gönderildi." });
   }

   return Json(new { Success = false, Result = "Mesajınız Gönderilemedi." });
}

, , ,

No Comments

entity framework codefirst one to one relation

Customer Class

public int CustomerID { get; set; }
public string CustomerFirstName { get; set; }
public string CustomerLastName { get; set; }
public virtual Address CustomerShippingAddress { get; set; }

Address Class

public int AddressID { get; set; }
public string AddressTag { get; set; }
public string AddressText { get; set; }
public virtual Customer AddressShippingCustomer { get; set; }

Customer Mapping

public CustomerMap() {
this.ToTable("tblCustomer");
this.HasKey(a => a.Id);

this.Property(a => a.CustomerID).HasColumnName("CustomerID");
this.HasOptional(a => a.CustomerShippingAddress).WithOptionalDependent(b => b.AddressShippingCustomer).Map(m => m.MapKey("CustomerShippingAddressID"));
}

, , ,

No Comments

HtmlEditor-FireFox Unknown Character

Eğer AjaxControlToolkit in HtmlEditor ünü kullanırken Firefox ta türkçe karakterleri görüntüleyememek gibi bir problem ile karşılaşırsanız HtmlEditorünüze NoUnicode=”true” property sini ekleyin, problemi çözebilir ;)

No Comments

Javascript Trim Fonksiyonu

Javascript’ te herhangi bir string’ i trim’ lemek istediginizde asagidaki kod işinizi görecektir. String’ in hem başında ki hem de sonunda ki tüm boşluklar replace fonksiyonu ile temizlenecektir.
var sString = ' trim-replace ';
sString = sString.replace(/^\s+|\s+$/g, '');

No Comments

tsql de kümülatif toplam

geçici tablo create ediyoruz.
create table #tmpTable (DayCount int identity(1,1), Sales money)

örnek data insert ediyoruz.

DECLARE @DayCount int, @Sales MONEY
SET @DayCount = 5
SET @Sales = 10
WHILE @DayCount < 5000
 BEGIN
  INSERT #tmpTable VALUES (@Sales)
  SET @DayCount = @DayCount + 1
  SET @Sales = @Sales + 15
 END 
select * from #tmpTable;

1.yöntem 2sn

SELECT DayCount,
       Sales,
       Sales+COALESCE((SELECT SUM(Sales)
                      FROM #tmpTable b
                      WHERE b.DayCount < a.DayCount),0)
                         AS RunningTotal
FROM #tmpTable a
ORDER BY DayCount

  2.yöntem 7 sn

SELECT a.DayCount,
       a.Sales,
       SUM(b.Sales)  AS RunningTotal
FROM #tmpTable a
CROSS JOIN #tmpTable b
WHERE (b.DayCount <= a.DayCount)
GROUP BY a.DayCount,a.Sales
ORDER BY a.DayCount,a.Sales

  3.yöntem 0 sn

;WITH TmpTable(DayCount, Sales, RunningTotal)
AS
(
 SELECT 0 AS DayCount, CAST(0 AS money) AS Sales, CAST(0 AS money) AS RunningTotal
 UNION ALL
 SELECT tmp.DayCount,
   tmp.Sales,
   tmp.Sales + t.RunningTotal AS RunningTotal
 FROM #tmpTable AS tmp, TmpTable AS t
 WHERE (tmp.DayCount = t.DayCount+1)
)
SELECT *
FROM TmpTable
WHERE DayCount>0
OPTION (MAXRECURSION 32767);

örnek sonuç;
cumulative-toplam-result

, ,

2 Comments

MaintainScrollPositionOnPostback – sayfa refresh oldugunda scroolbar pozisyonunu korumak

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs"
Inherits="default" smartNavigation="true" MaintainScrollPositionOnPostback="true" %>

,

No Comments

ASP.Net Control Print

<script language=JavaScript>
<!--
	function printPartOfPage() {
		var printContent = document.getElementById('pnlRealtyVisitReport');
		var windowUrl = 'about:blank';
		var uniqueName = new Date();
		var windowName = 'Print' + uniqueName.getTime();
		var printWindow = window.open(windowUrl, windowName,
                                         'left=50000,top=50000,width=0,height=0');
		printWindow.document.write(printContent.innerHTML);
		printWindow.document.close();
		printWindow.focus();
		printWindow.print();
		printWindow.close();
	}
// -->
</script>
<style type="text/css">
	@media print {<
		#btnCancel{
			display: none;
		}
		#btnPrint {
			display: none;
		}
</style>
<asp:Panel runat="server" ID="pnlRealtyVisitReport" CssClass="modalMain" Width="630"
   Style="display: none" ClientIDMode="Static">
</asp:Panel>
<asp:Button runat="server" ID="btnPrint" ClientIDMode="Static"
   Text="<%$ Resources:Labels, btnPrint %>" CausesValidation="false"
   OnClientClick="printPartOfPage();" />

, , ,

No Comments

jQuery ile Flash (.swf) oynatımı

Merhaba,

Şu an hali hazırda son aşamalarına gelmiş bir projenin testlerinden dönen buglar sonrasında bir flash banner’ı oynatma ihtiyacı duyduk ve nasıl yaparız en kısa yoldan ne kullanarak çalıştırabiliriz kısmında takıldık ve biraz araştırarak biraz bir şeyler katarak nasıl yaptığımıza isterseniz birlikte göz atalım. Öncelikle

(function ()
  var $$;
  $$ = jQuery.fn.flash = function (htmlOptions, pluginOptions, replace, update) {
        // Set the default block.
        var block = replace || $$.replace;
        // Merge the default and passed plugin options.
        pluginOptions = $$.copy($$.pluginOptions, pluginOptions);
        // Detect Flash.
        if (!$$.hasFlash(pluginOptions.version)) {
            if (pluginOptions.expressInstall &amp;&amp; $$.hasFlash(6, 0, 65)) {
                var expressInstallOptions = {
                    flashvars: {
                        MMredirectURL: location,
                        MMplayerType: 'PlugIn',
                        MMdoctitle: jQuery('title').text()
                    }
                };
                // Ask the user to update (if specified).
            } else if (pluginOptions.update) {
                // Change the block to insert the update message instead of the flash movie.
                block = update || $$.update;
                // Fail
            } else {
                return this;
            }
        }
        // Merge the default, express install and passed html options.
        htmlOptions = $$.copy($$.htmlOptions, expressInstallOptions, htmlOptions);
        return this.each(function () {
            block.call(this, $$.copy(htmlOptions));
        });
    };
 $$.copy = function () {
        var options = {}, flashvars = {};
        for (var i = 0; i &lt; arguments.length; i++) {
            var arg = arguments[i];
            if (arg == undefined) continue;
            jQuery.extend(options, arg);
            // don't clobber one flash vars object with another
            if (arg.flashvars == undefined) continue;
            jQuery.extend(flashvars, arg.flashvars);
        }
        options.flashvars = flashvars;
        return options;
    };
  $$.hasFlash = function () {
        // look for a flag in the query string to bypass flash detection
        if (/hasFlash\=true/.test(location)) return true;
        if (/hasFlash\=false/.test(location)) return false;
        var pv = $$.hasFlash.playerVersion().match(/\d+/g);
        var rv = String([arguments[0], arguments[1], arguments[2]]).match(/\d+/g) || String($$.pluginOptions.version).match(/\d+/g);
        for (var i = 0; i &lt; 3; i++) {
            pv[i] = parseInt(pv[i] || 0);
            rv[i] = parseInt(rv[i] || 0);
            // player is less than required
            if (pv[i] &lt; rv[i]) return false;
            // player is greater than required
            if (pv[i] &gt; rv[i]) return true;
        }
        // major version, minor version and revision match exactly
        return true;
    };
 $$.hasFlash.playerVersion = function () {
        // ie
        try {
            try {
                var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
                try { axo.AllowScriptAccess = 'always'; }
                catch (e) { return '6,0,0'; }
            } catch (e) { }
            return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
            // other browsers
        } catch (e) {
            try {
                if (navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) {
                    return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
                }
            } catch (e) { }
        }
        return '0,0,0';
    };
  $$.htmlOptions = {
        height: 240,
        flashvars: {},
        pluginspage: 'http://www.adobe.com/go/getflashplayer',
        src: '#',
        type: 'application/x-shockwave-flash',
        width: 320
    };
    $$.pluginOptions = {
        expressInstall: false,
        update: true,
        version: '6.0.65'
    };
  $$.replace = function (htmlOptions) {
        this.innerHTML = '&lt;div class="alt"&gt;' + this.innerHTML + '&lt;/div&gt;';
        jQuery(this)
		.addClass('flash-replaced')
		.prepend($$.transform(htmlOptions));
    };
    /**
    $$.update = function (htmlOptions) {
        var url = String(location).split('?');
        url.splice(1, 0, '?hasFlash=true&amp;');
        url = url.join('');
        var msg = '&lt;p&gt;This content requires the Flash Player. &lt;a href="http://www.adobe.com/go/getflashplayer"&gt;Download Flash Player&lt;/a&gt;. Already have Flash Player? &lt;a href="' + url + '"&gt;Click here.&lt;/a&gt;&lt;/p&gt;';
        this.innerHTML = '&lt;span class="alt"&gt;' + this.innerHTML + '&lt;/span&gt;';
        jQuery(this)
		.addClass('flash-update')
		.prepend(msg);
    };
    function toAttributeString() {
        var s = '';
        for (var key in this)
            if (typeof this[key] != 'function')
                s += key + '="' + this[key] + '" ';
        return s;
    };
    function toFlashvarsString() {
        var s = '';
        for (var key in this)
            if (typeof this[key] != 'function')
                s += key + '=' + encodeURIComponent(this[key]) + '&amp;';
        return s.replace(/&amp;$/, '');
    };
    $$.transform = function (htmlOptions) {
        htmlOptions.toString = toAttributeString;
        if (htmlOptions.flashvars) htmlOptions.flashvars.toString = toFlashvarsString;
        return '&lt;embed ' + String(htmlOptions) + '/&gt;';
    };
    if (window.attachEvent) {
        window.attachEvent("onbeforeunload", function () {
            __flash_unloadHandler = function () { };
            __flash_savedUnloadHandler = function () { };
        });
    }
})();

bu javaScript kodunu bir dosyaya yazıyoruz ve adını jquery.flash.js olarak kaydediyoruz.
Eğer sayfalarınızın inherit edildiği bir masterpage’e sahipseniz bunu masterpageFile’ına değilseniz sayfanızın page direktiflerinin olduğu kısma yani en üst kısma

<script src="/Scripts/jquery.flash.js" type="text/javascript"></script>

kodunu ekliyoruz.
Sonrasında da aslında olay basit. Flash animasyonu oynatacağınız sayfanıza

<script type="text/javascript">
        $('#example').flash(
                );
    </script>

şeklinde html tarafına scriptimizi ekliyoruz. Daha sonrada:

<div id="example" class="flash-replaced">
   <embed width="220" height="165" type="application/x-shockwave-flash"
   src="Videos/Firsatilanlari_220x165.swf?clickTAG=/Intro/pgHighlightingOptions.aspx"
   pluginspage="http://www.adobe.com/go/getflashplayer" />
</div>

bu iki div arasına (< e m b e d />) tag’i içerisindeki kodu yazıyoruz. Burada önemli iki unsur var, birincisi sayfaya eklediğimiz javaScriptte “$(‘#example’).flash” example adı aslında bizim alt taraftaki div’imizin ID si eğer isimleri farklı olursa flashPlayer çalışmaz. Yani div’in ID’ si ile javaScript içerisindeki isim aynı olmalı.
Bu arada width=”220″ yazarak animasyonumuzun genişliğinin 220px olduğunu height=”165″ yazarak animasyonun yüksekliğinin 165px olduğunu, type=”application/x-shockwave-flash” yazarak ne tür bir dosya olduğunu belirtiyoruz ve en önemlisi ve dikkat etmemiz gereken ikinci unsur olarak: src=”Videos/Firsatilanlari_220x165.swf?clickTAG=/Intro/pgHighlightingOptions.aspx” kısmı bizim flash dosyamızın path’ini belirtiyor. ?clickTAG=/Intro/pgHighlightingOptions.aspx kısmı ise flash palyer’ın üzerine tıklandığınıda Redirect olacak page’imizi söylüyor. Video isminden sonra “?clickTAG=” eklememiz muhakkak gerekli. “a href=”pgZamasing.aspx” şekline yazarak ya da HyperLink kullanmak isterseniz ben çalıştıramadım ancak bu şekilde sorunu çözebildim.
Görüşmek üzere.

,

5 Comments

datalist’de horizontal databinding

datalist’de yukarıdaki gibi bir görüntü sağlayabilmek için kısa bir örnek;

aspx;

<table>
<tr>
    <td>
	<asp:Label ID="lblRate" runat="server" Text="Faiz Oranı" Width="150px" />
	<br />
	<asp:Label ID="lblApr" runat="server" Text="YMO" Width="150px" />
	<br />
	<asp:Label ID="lblTotal" runat="server" Text="Toplam Ödeme" Width="150px" />
	<br />
    </td>
    <td>
	<asp:DataList ID="DataList1" runat="server" RepeatLayout="Table" RepeatDirection="Horizontal">
	    <HeaderTemplate>
	    </HeaderTemplate>
	    <ItemTemplate>
		<asp:Label ID="lblRateVal" runat="server" Text='<%# Eval("Rate") %>' Width="100px" />
		<br />
		<asp:Label ID="lblAprVal" runat="server" Text='<%# Eval("Apr") %>' Width="100px" />
		<br />
		<asp:Label ID="lblTotalVal" runat="server" Text='<%# Eval("Total") %>' Width="10px" />
		<br />
	    </ItemTemplate>
	    <FooterTemplate>
	    </FooterTemplate>
	</asp:DataList>
    </td>
</tr>
</table>

cs file;

protected void Page_Load(object sender, EventArgs e) {
	if (!Page.IsPostBack) {
		List<Data> clsData = new List<Data> {
			new Data { Rate = 0.45M, Apr = 10.45M, Total = 10000M },
			new Data { Rate = 0.50M, Apr = 10.50M, Total = 11000M },
			new Data { Rate = 0.55M, Apr = 10.55M, Total = 12000M },
			new Data { Rate = 0.60M, Apr = 10.60M, Total = 13000M },
			new Data { Rate = 0.65M, Apr = 10.70M, Total = 14000M },
		};
		DataList1.RepeatColumns = clsData.Count;
		DataList1.DataSource = clsData;
		DataList1.DataBind();
	}
}

public class Data {
	public decimal Rate { get; set; }
	public decimal Apr { get; set; }
	public decimal Total { get; set; }
}

, , , , ,

No Comments

popup blocker problemini gidermek için LinkButton/Button’a target=’blank’ ekleme

Linkbutton’ın click eventi içerisinde bir kod bloğu çalıştırdıktan sonra, bir yere response.redirect etmek istiyoruz. Fakat bu redirect ettiğimiz yeri de yeni sayfada açmak istiyorsak,

html kısmında linkbutton’a OnClientClick=”aspnetForm.target =’_blank’;” yazmanız yeterli.

<asp:LinkButton ID="btnTest" runat="server" OnClick="btnTest_Click" OnClientClick="aspnetForm.target ='_blank';"></asp:LinkButton>
protected void btnTest_Click(object sender, EventArgs e) {
    // Some codes
    Response.Redirect("/test.aspx");
}

önemli uyarı: update panel içerisinde windows open yapmıyor!!!

,

No Comments